redis是個(gè)基于內(nèi)存的緩存數(shù)據(jù)庫(kù),既然是基于內(nèi)存的,那肯定就會(huì)有存滿的時(shí)候
如果真的存滿了,再有新的數(shù)據(jù)過(guò)來(lái)肯定就存不進(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è)置了過(guò)期時(shí)間的key中使用LRU算法進(jìn)行淘汰
4.allkeys-random:從所有key中隨機(jī)淘汰數(shù)據(jù)
5.volatile-random:從設(shè)置了過(guò)期時(shí)間的key中隨機(jī)淘汰
6.volatile-ttl:在設(shè)置了過(guò)期時(shí)間的key中,淘汰過(guò)期時(shí)間剩余最短的
當(dāng)使用volatile-lru、volatile-random、volatile-ttl這三種策略時(shí),如果沒(méi)有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)存資源來(lái)支持運(yùn)行,所以 32 位機(jī)器限制最大 3 GB 的可用內(nèi)存
3、設(shè)置淘汰策略
通過(guò)配置文件設(shè)置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
通過(guò)命令修改淘汰策略:
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文章
3885瀏覽量
65631 -
Redis
+關(guān)注
關(guān)注
0文章
382瀏覽量
11266
原文標(biāo)題:Redis 6種淘汰機(jī)制,看看你知道哪些?
文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Redis 再次開(kāi)源!
英飛凌與RT-Labs將六種關(guān)鍵工業(yè)通信協(xié)議集成到XMC7000 MCU系列中

帶你探索:運(yùn)放芯片的六種實(shí)用端接策略

Redis實(shí)戰(zhàn)筆記

華為云 Flexus X 加速 Redis 案例實(shí)踐與詳解

Redis Cluster之故障轉(zhuǎn)移

華為云Flexus X實(shí)例,Redis性能加速評(píng)測(cè)及對(duì)比

Redis緩存與Memcached的比較
深度排查恩智浦MCX N系列支持的六種電源模式

如何運(yùn)用數(shù)字化技術(shù)加速六西格瑪策略的實(shí)施與成效?
六種dcdc變換器特點(diǎn)是什么
水冷液冷負(fù)載系統(tǒng)的六種基本類型

K8S學(xué)習(xí)教程(二):在 PetaExpress KubeSphere容器平臺(tái)部署高可用 Redis 集群

快速搞懂GPIO控制器的六種模式

評(píng)論