redis lru緩存清理算法詳解和相關配置
阿新 • • 發佈:2018-01-15
rand add 就是 即使 oev ima 最大的 進行 時間比較 首先,需要先配置redis的conf文件,涉及到lru相關的配置一共有三個分別是:
maxmemory,設置redis用來存放數據的最大的內存大小,一旦超出這個內存大小之後,就會立即使用LRU算法清理掉部分數據
maxmemory-policy,可以設置內存達到最大閑置後,采取什麽策略來處理
(1)noeviction: 如果內存使用達到了maxmemory,client還要繼續寫入數據,那麽就直接報錯給客戶端
(2)allkeys-lru: 就是我們常說的LRU算法,移除掉最近最少使用的那些keys對應的數據,ps最長用的策略
(3)volatile-lru: 也是采取LRU算法,但是僅僅針對那些設置了指定存活時間(TTL)的key才會清理掉
(4)allkeys-random: 隨機選擇一些key來刪除掉
(5)volatile-random: 隨機選擇一些設置了TTL的key來刪除掉
(6)volatile-ttl: 移除掉部分keys,選擇那些TTL時間比較短的keys
lru 采用近似值算法,從3.0開始lru算法引入了pool機制,表現可以跟真正的lru算法相當,是通過采樣之後的lru清理和傳統的全量lru略有不同。
使用maxmemory-samples進行配置,比如5,可以設置采樣的大小,如果設置為10,那麽效果會更好,不過也會耗費更多的CPU資源
以上,就是針對redis lru緩存清理相關問題的講解。
redis lru緩存清理算法詳解和相關配置