清除 redis 无用数据
May 7, 2019
近期发现redis数据暴增, 检查发现有很多key下入的时候,没有设置过期时间, 而且key的名称是拼接上了时间, 和随机数。这个清理这些key带来了一点麻烦。
最基本的原理就是, 把key找出来, 然后再删除。
之前有写一片文章说明 直接使用 redis-cli -n {数据库} keys ‘{glob 匹配, 参考官方文档有惊喜}’ | xargs -n 1 redis-cli del 但是, 这个方案再数据量大的时候, 会阻塞线上业务.
找出 key 的名称
- redis-server 执行 bgsave, 把redis数据持久化到硬盘上。
- 找一个好用的工具rdb 一个python写的 dump.rdb 分析工具.
- 执行
rdb --command justkeys --key ".*" dump.rdb
- 找出的key需要去重下, rdb这个工具解析出来的key会有重复的
构造redis通用数据
发现到处来的keys文件贼大, 需要切割它
split -a 6 -l 10000 dump.keys
使用redis的pipleline 来批量处理它, bash 开启多个进程来处理它。也不能开太多。
1 |
|
- 发现redis的内存释放飞流直下三千尺。