背景:codis集群的其中一个redis-master主机系统内存不足
思路:
解决方法中最简单粗暴也是直接有效的当然是增加主机的物理内存
另外一个思路,因为公司业务发展很多年,redis内存中应该存有一些未设置过期时间无用的key
排查:
通过codis-dashboard发现其中有一个db中,存在大量的内存,切并没有多少连接数,问题可以从此库入手
通过redis-cli工具登录至redis库中开始查看(redis-cli -h host -p port),用RANDOMKEY 随机抽取查看一些key
与业务确认比较频繁的key现在是否有在使用,可以通过keys 查看该key的数量(这样并不合理,最好的方式通过rdb查看所有该key的占用内存)
得知一些key,可以写脚本,通过定时任务来清理该key
清理:
redis-cli -h host -p port -a password -n 4 keys "aaaakey*" | xargs redis-cli -h host -p port -a password -n 4 del
-a 密钥
-n 指定哪个db库