參考:https://zhuanlan.zhihu.com/p/102513831
Redis內存淘汰策略
將Redis用作緩存時,如果內存空間用滿,就會自動驅逐老的數據。
為什么要使用內存淘汰策略呢?
當海量數據涌入redis,導致redis裝不下了咋辦,我們需要根據redis的內存淘汰策略,淘汰一些不那么重要的key,來滿足大量數據的存入。
Redis六種淘汰策略
- noeviction:當內存使用達到閾值的時候,所有引起申請內存的命令會報錯。
- allkeys-lru:在主鍵空間中,優先移除最近未使用的key。(推薦)
- volatile-lru:在設置了過期時間的鍵空間中,優先移除最近未使用的key。
- allkeys-random:在主鍵空間中,隨機移除某個key。
- volatile-random:在設置了過期時間的鍵空間中,隨機移除某個key。
- volatile-ttl:在設置了過期時間的鍵空間中,具有更早過期時間的key優先移除。
白話文翻譯
- noeviction:當內存使用達到閾值的時候,執行命令直接報錯
- allkeys-lru:在所有的key中,優先移除最近未使用的key。(推薦)
- volatile-lru:在設置了過期時間的鍵空間中,優先移除最近未使用的key。
- allkeys-random:在所有的key中,隨機移除某個key。
- volatile-random:在設置了過期時間的鍵空間中,隨機移除某個key。
- volatile-ttl:在設置了過期時間的鍵空間中,具有更早過期時間的key優先移除。
如何配置Redis淘汰策略
-
找到redis.conf文件
設置Redis 內存大小的限制,我們可以設置maxmemory ,當數據達到限定大小后,會選擇配置的策略淘汰數據
比如:maxmemory 300mb。 -
設置內存淘汰具體使用那種策略
設置Redis的淘汰策略。比如:maxmemory-policy volatile-lru