Redis 6種淘汰機制,看看你知道哪些?

redis是個基於內存的緩存數據庫,既然是基於內存的,那肯定就會有存滿的時候

如果真的存滿了,再有新的數據過來肯定就存不進去了

此時redis會執行既定的一些淘汰策略,本文大概講一下redis六種淘汰策略

一、六種淘汰策略

1.noeviction(默認策略):對於寫請求不再提供服務,直接返回錯誤(DEL請求和部分特殊請求除外)

2.allkeys-lru:從所有key中使用LRU算法進行淘汰(LRU算法:即最近最少使用算法)

3.volatile-lru:從設置了過期時間的key中使用LRU算法進行淘汰

4.allkeys-random:從所有key中隨機淘汰數據

5.volatile-random:從設置了過期時間的key中隨機淘汰

6.volatile-ttl:在設置了過期時間的key中,淘汰過期時間剩餘最短的

當使用volatile-lru、volatile-random、volatile-ttl這三種策略時,如果沒有key可以被淘汰,則和noeviction一樣返回錯誤

二、如何獲取及設置內存淘汰策略

1、獲取當前內存淘汰策略:

127.0.0.1:6379> config get maxmemory-policy

可以看到當前使用的默認的noeviction策略

2、獲取Redis能使用的最大內存大小

127.0.0.1:6379> config get maxmemory

如果不設置最大內存大小或者設置最大內存大小爲0,在64位操作系統下不限制內存大小,在32位操作系統下最多使用3GB內存。32 位的機器最大隻支持 4GB 的內存,而系統本身就需要一定的內存資源來支持運行,所以 32 位機器限制最大 3 GB 的可用內存

3、設置淘汰策略

通過配置文件設置淘汰策略(修改redis.conf文件):

maxmemory-policy allkeys-lru

通過命令修改淘汰策略:

127.0.0.1:6379> config set maxmemory-policy allkeys-lru

4、設置Redis最大佔用內存大小

#設置Redis最大佔用內存大小爲100M
127.0.0.1:6379> config set maxmemory 100mb

來源:blog.csdn.net/ju_362204801/article/details/114441137

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章