redis內(nèi)存淘汰機制

配置:
  • redis.conf配置文件中配置最大可用內(nèi)存
//設(shè)置Redis最大占用內(nèi)存大小為100M
maxmemory 100mb
  • 命令操作
//設(shè)置Redis最大占用內(nèi)存大小為100M
127.0.0.1:6379> config set maxmemory 100mb
//獲取設(shè)置的Redis能使用的最大內(nèi)存大小
127.0.0.1:6379> config get maxmemory
  • redis內(nèi)存淘汰機制

種類

  • noeviction(默認策略):對于寫請求不再提供服務(wù),直接返回錯誤(DEL請求和部分特殊請求除外)
  • allkeys-lru從所有key中使用LRU算法進行淘汰
  • volatile-lru從設(shè)置了過期時間的key中使用LRU算法進行淘汰
  • allkeys-random從所有key中隨機淘汰數(shù)據(jù)
  • volatile-random從設(shè)置了過期時間的key中隨機淘汰
  • volatile-ttl在設(shè)置了過期時間的key中,根據(jù)key的過期時間進行淘汰,越早過期的越優(yōu)先被淘汰

內(nèi)存淘汰機制設(shè)置獲取修改

  • 獲取:127.0.0.1:6379> config get maxmemory-policy
  • 設(shè)置:maxmemory-policy allkeys-lru(通過redis.conf文件)
  • 修改:127.0.0.1:6379> config set maxmemory-policy allkeys-lru
  • LRU算法
  • 概念:LRU(Least Recently Used),即最近最少使用,是一種緩存置換算法其核心思想是:如果一個數(shù)據(jù)在最近一段時間沒有被用到,那么將來被使用到的可能性也很小,所以就可以被淘汰掉。
  • LRU在redis中的實現(xiàn)
    redis實現(xiàn)的是近似LRU算法,近似的LRU算法通過隨機采樣法淘汰數(shù)據(jù),每次選取出五個(默認值)數(shù)據(jù)key,從里面淘汰最近最少使用的key。redis為了實現(xiàn)近似LRU算法,給每個key值增加了一個24bit的字段用于存儲最后一次被訪問的時間。
  • redis3.0對LRU算法的優(yōu)化
    新算法維護一個候選池(大小16),池中的數(shù)據(jù)根據(jù)訪問時間進行排序,第一次隨機選取的key值會被放入池中,隨后每次選取的key值只有訪問時間小于池中最小訪問時間才會放入直到放滿,如果有新加入則移除池中最后訪問時間最大的key,當需要進行淘汰時,則直接從池中選取最近訪問時間最?。ㄗ罹脹]有被調(diào)用)的進行淘汰。
  • LFU算法
  • 概念:LFU算法是Redis4.0里面新加的一種淘汰策略。它的全稱是Least Frequently Used,它的核心思想是根據(jù)key的最近被訪問的頻率進行淘汰,很少被訪問的優(yōu)先被淘汰,被訪問的多的則被留下來。
  • 策略:LFU一共有兩種策略:
    1.volatile-lfu:在設(shè)置了過期時間的key中使用LFU算法淘汰key
    2.allkeys-lfu:在所有的key中使用LFU算法淘汰數(shù)據(jù)
  • 注意

1. 如果不設(shè)置內(nèi)存大小或內(nèi)存大小設(shè)置為0,64位操作系統(tǒng)將不限制內(nèi)存大小,32位操作系統(tǒng)將限制最大可用內(nèi)存為3G。

2.redis內(nèi)存淘汰機制中當使用volatile-lru、volatile-random、volatile-ttl這三種策略時,如果沒有key可以被淘汰,則和noeviction一樣返回錯誤

3.redis中的LRU算法可以通過maxmemory-samples參數(shù)修改采樣數(shù)量:例:maxmemory-samples 10
maxmenory-samples配置的越大,淘汰的結(jié)果越接近于嚴格的LRU算法

4.設(shè)置使用這兩種淘汰策略跟前面講的一樣,不過要注意的一點是這兩周策略只能在Redis4.0及以上設(shè)置,如果在Redis4.0以下設(shè)置會報錯

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容