k8s的docker环境下 , redis批量删除key
Posted hoho_12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s的docker环境下 , redis批量删除key相关的知识,希望对你有一定的参考价值。
问题背景:线上系统功能卡顿,接口调用长达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这种单线程模型里面,数据量一旦大了,容易造成阻塞。
以上是关于k8s的docker环境下 , redis批量删除key的主要内容,如果未能解决你的问题,请参考以下文章
k8s 实验过程中遇到的两个小问题 端口 和 批量删除Error的pods