Docker环境中redis批量删除

问题背景:由于线上系统功能卡顿,接口调用卡顿长达数分钟,经过排查发现是缓存未设置过期时间过多导致redis数据量达到百万级。需要批量删除key

Redis 中有删除单个Key的指令 DEL,但好像没有批量删除Key的指令,不过我们可以借助Linux的xargs指令来完成这个动作。

过程:redis部署安装在Linux的docker环境中,
1.登录Linux找到对应的doker容器,进入到bin/bash界面。

docker exec -it redis /bin/bash

这里是引用

2.进入到redis-cli的目录下,执行如下命令:

redis-cli -n 0 -p 6379 -a root scan 0 match '11*' count 2 |xargs redis-cli -n 0 -p 6379 -a root del

在这里插入图片描述
批量删除前:
在这里插入图片描述
批量删除:
在这里插入图片描述
批量删除后:
在这里插入图片描述

参数讲解:
redis-cli -n 0 -p 6379 -a root --scan 0 --pattern '1’ count 10 | xargs redis-cli -n 0 -p 6379 -a root del*
-n : 后面跟的是数据库,具体哪个数据库。
-p : 后面跟的是端口
-a: 后面跟的是登陆密码
–scan 后面跟的数量值是游标值
–pattern 表示以某种规则进行迭代扫描,这里 1* 表示以 1 开头的key。
–count 后面跟的是要删除的数量
| xargs 表示可以把前面得到的所有key,传递到后面那句的参数里
遇到的问题:

禁止使用
redis-cli -n 0 -p 6379 -a root keys '1’ count 2 |xargs redis-cli -n 0 -p 6379 -a root del* 命令
因为KEYS或者SMEMBERS在针对大型集合调用时可能会阻塞服务器很长时间(甚至几秒钟)键或元素。
但 SCAN 命令系列仅对返回的元素提供有限的保证,因为我们增量迭代的集合在迭代过程中可能会发生变化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值