您好,登錄后才能下訂單哦!
小編給大家分享一下redis緩存策略有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
將Redis用作緩存時, 如果內存空間用滿, 就會自動驅逐老的數據。 默認情況下memcached就是這種方式, 大部分開發者都比較熟悉。LRU是Redis唯一支持的回收算法.
驅逐策略
達到最大內存限制時(maxmemory), Redis 根據 maxmemory-policy 配置的策略, 來決定具體的行為。
當前版本,Redis 3.0 支持的策略包括:
noeviction: 不刪除策略, 達到最大內存限制時, 如果需要更多內存, 直接返回錯誤信息。 大多數寫命令都會導致占用更多的內存(有極少數會例外, 如 DEL )。
allkeys-lru: 所有key通用; 優先刪除最近最少使用(less recently used ,LRU) 的 key。
volatile-lru: 只限于設置了 expire 的部分; 優先刪除最近最少使用(less recently used ,LRU) 的 key。
allkeys-random: 所有key通用; 隨機刪除一部分 key。
volatile-random: 只限于設置了 expire 的部分; 隨機刪除一部分 key。
volatile-ttl: 只限于設置了 expire 的部分; 優先刪除剩余時間(time to live,TTL) 短的key。
如果沒有設置 expire 的key, 不滿足先決條件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行為, 和 noeviction(不刪除) 基本上一致。
您需要根據系統的特征, 來選擇合適的驅逐策略。 當然, 在運行過程中也可以通過命令動態設置驅逐策略, 并通過 INFO 命令監控緩存的 miss 和 hit, 來進行調優。
一般來說:
如果分為熱數據與冷數據, 推薦使用 allkeys-lru 策略。 也就是, 其中一部分key經常被讀寫. 如果不確定具體的業務特征, 那么 allkeys-lru 是一個很好的選擇。
如果需要循環讀寫所有的key, 或者各個key的訪問頻率差不多, 可以使用 allkeys-random 策略, 即讀寫所有元素的概率差不多。
假如要讓 Redis 根據 TTL 來篩選需要刪除的key, 請使用 volatile-ttl 策略。
volatile-lru 和 volatile-random 策略主要應用場景是: 既有緩存,又有持久key的實例中。 一般來說, 像這類場景, 應該使用兩個單獨的 Redis 實例。
值得一提的是, 設置 expire 會消耗額外的內存, 所以使用 allkeys-lru 策略, 可以更高效地利用內存, 因為這樣就可以不再設置過期時間了。
以上是redis緩存策略有哪些的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。