k8s的docker环境下 , redis批量删除key

k8s的docker环境下 , redis批量删除key,第1张

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

过程:

redis部署安装在k8s的docker环境中,先登录k8s找到相应的doker容器,进入到bash界面。

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

./redis-cli -n 0 -p 6379 -a 1234 --scan 5000 --pattern 'fbc1aebc6907*'|xargs ./redis-cli -n 0 -p 6379 -a 1234 del

控制台一直刷新受影响的结果,最终顺利删除redis数据,功能正常使用。

备注: 此处的docker环境其实就相当于linux环境。

参数讲解:

-n : 后面跟的是数据库,第几个数据库。

-p : 后面跟的是端口

-a: 后面跟的是登陆密码

--sacn --pattern : 表示以某种规则进行迭代扫描,这里fbc1aebc6907*表示以fbc1aebc6907开头的key。

--scan 后面跟的数量值,目前还没弄清楚是游标值还是count值。 总之加了这个值才能正常删除。不加的话,每次只会删除一部分。

遇到的问题:

最开始使用 ./redis-cli -n 0 -p 6379 -a 1234 keys 'fbc1aebc6907*'|xargs ./redis-cli -n 0 -p 6379 -a 1234 del 命令,每次只是删除部分内容。网上查 keys 命令在 redis这种单线程模型里面,数据量一旦大了,容易造成阻塞。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/800489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-07
下一篇 2022-05-07

发表评论

登录后才能评论

评论列表(0条)

保存