环境: 某个redis集群(redis4.0.11的主从环境)

背景:这个redis集群开发有大量的key的写入和过期,导致内存急剧上涨。


使用 rdb工具 (git地址:https://github.com/sripathikrishnan/redis-rdb-tools) 分析下rdb文件后,发现内存中有很多的key,过期时间早到了,但是实际上还存在。原因: 因为redis的key清理策略是懒惰删除(lazy free),我们可以尝试调大,这样每秒钟执行的redis的内部cronjob次数将增大,也就可以加快key的淘汰。


操作步骤:

1、config get hz   看到当前redis-server 默认值是10 


2、config set hz 50    我们这里将hz设置为50,然后观察段时间看看(注意hz的设置值可以以10为步长逐步增加,但是一般不要超过100)


下面 2张图,是我从监控上截取的。可以看到 设置后迅速有大量的key被淘汰了。

【案例】redis-server 大量key过期不释放空间的_第1张图片

【案例】redis-server 大量key过期不释放空间的_第2张图片