redis是個基于內(nèi)存的緩存數(shù)據(jù)庫,既然是基于內(nèi)存的,那肯定就會有存滿的時候
如果真的存滿了,再有新的數(shù)據(jù)過來肯定就存不進去了
此時redis會執(zhí)行既定的一些淘汰策略,本文大概講一下redis六種淘汰策略
01六種淘汰策略
1.noeviction(默認策略):對于寫請求不再提供服務,直接返回錯誤(DEL請求和部分特殊請求除外)
2.allkeys-lru:從所有key中使用LRU算法進行淘汰(LRU算法:即最近最少使用算法)
3.volatile-lru:從設置了過期時間的key中使用LRU算法進行淘汰
4.allkeys-random:從所有key中隨機淘汰數(shù)據(jù)
5.volatile-random:從設置了過期時間的key中隨機淘汰
6.volatile-ttl:在設置了過期時間的key中,淘汰過期時間剩余最短的
當使用volatile-lru、volatile-random、volatile-ttl這三種策略時,如果沒有key可以被淘汰,則和noeviction一樣返回錯誤
02如何獲取及設置內(nèi)存淘汰策略
1、獲取當前內(nèi)存淘汰策略:
127.0.0.1:6379> configgetmaxmemory-policy
可以看到當前使用的默認的noeviction策略
2、獲取Redis能使用的最大內(nèi)存大小
127.0.0.1:6379> configgetmaxmemory
如果不設置最大內(nèi)存大小或者設置最大內(nèi)存大小為0,在64位操作系統(tǒng)下不限制內(nèi)存大小,在32位操作系統(tǒng)下最多使用3GB內(nèi)存。32 位的機器最大只支持 4GB 的內(nèi)存,而系統(tǒng)本身就需要一定的內(nèi)存資源來支持運行,所以 32 位機器限制最大 3 GB 的可用內(nèi)存
3、設置淘汰策略
通過配置文件設置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
通過命令修改淘汰策略:
127.0.0.1:6379> configsetmaxmemory-policyallkeys-lru
4、設置Redis最大占用內(nèi)存大小
#設置Redis最大占用內(nèi)存大小為100M
127.0.0.1:6379> configsetmaxmemory100mb
審核編輯 :李倩
-
數(shù)據(jù)庫
+關注
關注
7文章
3752瀏覽量
64233 -
Redis
+關注
關注
0文章
370瀏覽量
10830
原文標題:Redis 6種淘汰機制,看看你知道哪些?
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論