redis是個(gè)基于內(nèi)存的緩存數(shù)據(jù)庫(kù),既然是基于內(nèi)存的,那肯定就會(huì)有存滿的時(shí)候
如果真的存滿了,再有新的數(shù)據(jù)過來肯定就存不進(jìn)去了
此時(shí)redis會(huì)執(zhí)行既定的一些淘汰策略,本文大概講一下redis六種淘汰策略
01六種淘汰策略
1.noeviction(默認(rèn)策略):對(duì)于寫請(qǐng)求不再提供服務(wù),直接返回錯(cuò)誤(DEL請(qǐng)求和部分特殊請(qǐng)求除外)
2.allkeys-lru:從所有key中使用LRU算法進(jìn)行淘汰(LRU算法:即最近最少使用算法)
3.volatile-lru:從設(shè)置了過期時(shí)間的key中使用LRU算法進(jìn)行淘汰
4.allkeys-random:從所有key中隨機(jī)淘汰數(shù)據(jù)
5.volatile-random:從設(shè)置了過期時(shí)間的key中隨機(jī)淘汰
6.volatile-ttl:在設(shè)置了過期時(shí)間的key中,淘汰過期時(shí)間剩余最短的
當(dāng)使用volatile-lru、volatile-random、volatile-ttl這三種策略時(shí),如果沒有key可以被淘汰,則和noeviction一樣返回錯(cuò)誤
02如何獲取及設(shè)置內(nèi)存淘汰策略
1、獲取當(dāng)前內(nèi)存淘汰策略:
127.0.0.1:6379> configgetmaxmemory-policy
可以看到當(dāng)前使用的默認(rèn)的noeviction策略
2、獲取Redis能使用的最大內(nèi)存大小
127.0.0.1:6379> configgetmaxmemory
如果不設(shè)置最大內(nèi)存大小或者設(shè)置最大內(nèi)存大小為0,在64位操作系統(tǒng)下不限制內(nèi)存大小,在32位操作系統(tǒng)下最多使用3GB內(nèi)存。32 位的機(jī)器最大只支持 4GB 的內(nèi)存,而系統(tǒng)本身就需要一定的內(nèi)存資源來支持運(yùn)行,所以 32 位機(jī)器限制最大 3 GB 的可用內(nèi)存
3、設(shè)置淘汰策略
通過配置文件設(shè)置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
通過命令修改淘汰策略:
127.0.0.1:6379> configsetmaxmemory-policyallkeys-lru
4、設(shè)置Redis最大占用內(nèi)存大小
#設(shè)置Redis最大占用內(nèi)存大小為100M
127.0.0.1:6379> configsetmaxmemory100mb
審核編輯 :李倩
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
4019瀏覽量
68339 -
Redis
+關(guān)注
關(guān)注
0文章
392瀏覽量
12185
原文標(biāo)題:Redis 6種淘汰機(jī)制,看看你知道哪些?
文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Redis哨兵模式的自動(dòng)故障檢測(cè)與主從切換實(shí)戰(zhàn)
Redis內(nèi)存管理、持久化策略與慢查詢排查分析
代碼照亮未來:蘭州大學(xué)開源鴻蒙技術(shù)俱樂部的六種青春答卷
盤點(diǎn)連接器的六種鎖定機(jī)構(gòu)
代理式AI提升團(tuán)隊(duì)績(jī)效的六種方式
Redis集群部署配置詳解
Redis集群部署與性能優(yōu)化實(shí)戰(zhàn)
三相無刷直流電機(jī)改進(jìn)型脈寬調(diào)制策略
一文詳解線性穩(wěn)壓器IC的引腳保護(hù)
【經(jīng)驗(yàn)分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測(cè)試
【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】Redis最新8.0.2版本源碼安裝及性能測(cè)試
Redis 再次開源!
電機(jī)大范圍調(diào)速的綜合電壓調(diào)制策略
英飛凌與RT-Labs將六種關(guān)鍵工業(yè)通信協(xié)議集成到XMC7000 MCU系列中
redis六種淘汰策略
評(píng)論