環境: 某個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被淘汰了。