批量删除redis数据库中的key
线下环境测试时,由于配置的命名空间未做隔离,造成开发环境和测试环境中的数据污染,现需要批量删除两个命名空间下的数据:nlas和nlas-test。
特别说明:redis中命名空间,只是一种叫法,其实就是固定的key前缀,且以冒号
:
做分隔(当然也可以是其他分隔符,只要符合key命名规范)。
redis客户端本身不支持指定固定key前缀的批量删除操作,但我们可以借助linux的管道符处理工具对其操作。redis-cli是redis的命令行客户端,可以通过命令的方式执行redis的命令,此处我们要执行keys
和del
命令。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个值执行一次。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 独特的留白!
评论