redis是個基于內存的緩存數據庫,既然是基于內存的,那肯定就會有存滿的時候
如果真的存滿了,再有新的數據過來肯定就存不進去了
此時redis會執行既定的一些淘汰策略,本文大概講一下redis六種淘汰策略
01六種淘汰策略
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一樣返回錯誤
02如何獲取及設置內存淘汰策略
1、獲取當前內存淘汰策略:
127.0.0.1:6379> configgetmaxmemory-policy
可以看到當前使用的默認的noeviction策略
2、獲取Redis能使用的最大內存大小
127.0.0.1:6379> configgetmaxmemory
如果不設置最大內存大小或者設置最大內存大小為0,在64位操作系統下不限制內存大小,在32位操作系統下最多使用3GB內存。32 位的機器最大只支持 4GB 的內存,而系統本身就需要一定的內存資源來支持運行,所以 32 位機器限制最大 3 GB 的可用內存
3、設置淘汰策略
通過配置文件設置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
通過命令修改淘汰策略:
127.0.0.1:6379> configsetmaxmemory-policyallkeys-lru
4、設置Redis最大占用內存大小
#設置Redis最大占用內存大小為100M
127.0.0.1:6379> configsetmaxmemory100mb
審核編輯 :李倩
-
數據庫
+關注
關注
7文章
3816瀏覽量
64448 -
Redis
+關注
關注
0文章
376瀏覽量
10882
原文標題:Redis 6種淘汰機制,看看你知道哪些?
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論