线下环境测试时,由于配置的命名空间未做隔离,造成开发环境和测试环境中的数据污染,现需要批量删除两个命名空间下的数据:nlas和nlas-test。

特别说明:redis中命名空间,只是一种叫法,其实就是固定的key前缀,且以冒号:做分隔(当然也可以是其他分隔符,只要符合key命名规范)。

redis客户端本身不支持指定固定key前缀的批量删除操作,但我们可以借助linux的管道符处理工具对其操作。redis-cli是redis的命令行客户端,可以通过命令的方式执行redis的命令,此处我们要执行keysdel命令。xargs是linux的管道符命令。

下面就以删除nlas:命令空间为例:

1
redis-cli -h 10.59.6.54 -p 6379 -a B213547b69b13224 -n 0 keys "nlas:*" | xargs -r -t -n1 redis-cli -h 10.59.6.54 -p 6379 -a B213547b69b13224 -n  0 del

执行,删除成功!

本质上,上面命令分为两个部分执行:1、先登录查出需要删掉的key;2、把1中结果当成删除命令的参数,这个参数用xrgs接收,并给删除指令。

redis-cli命令解释:
-h  host
-p  port
-a  auth
-n  选择库,-n 1相当于select 1
这就登录了,然后执行keys "nlas:*"查询符合条件的key。

xargs命令参数解释:
-r  no-run-if-empty,如果参数为空不执行后面的命令。
-t  先打印执行命令,然后再执行。
-n1  传入的参数没批执行几条,-n1,1就是每次传入1个值执行一次。