redis的數(shù)據(jù)過期清除策略+緩存淘汰策略

1昧捷、首先,談一下個人的理解揍堕。清除過期數(shù)據(jù)料身、緩存淘汰策略是兩個方面的意思。

清除過期數(shù)據(jù)有三種策略:分別是定時刪除衩茸、定期刪除芹血、惰性刪除,并且分別基于定時器、hz參數(shù)的定期檢查幔烛、查詢過期key的時間節(jié)點(diǎn)啃擦,作為是否清除數(shù)據(jù)的動作觸發(fā)點(diǎn)。

緩存淘汰策略:是基于redis占用內(nèi)存是否達(dá)到設(shè)定的限制值饿悬,作為是否清除數(shù)據(jù)的動作觸發(fā)點(diǎn)令蛉。

可以說redis,平時基于清除數(shù)據(jù)的策略來清除過期的數(shù)據(jù)狡恬,因?yàn)榍罢哂|發(fā)條件容易滿足珠叔,執(zhí)行的頻率高;而后者要達(dá)到redis設(shè)置的限制值弟劲,需要時間和一系列清除策略的誤差祷安,才會被慢慢放大,最終達(dá)到限制內(nèi)存的臨界點(diǎn)兔乞。試想假定redis的內(nèi)存限制是50G汇鞭,基本不可能在短時間內(nèi)redis內(nèi)存使用率就達(dá)到臨界值。

2庸追、數(shù)據(jù)過期清除策略
  • 2.1 定時刪除
    每個設(shè)置過期時間的key都需要創(chuàng)建一個定時器霍骄,到過期時間就會立即對key進(jìn)行清除。該策略可以立即清除過期的數(shù)據(jù)淡溯,對內(nèi)存很友好读整;但是會占用大量的CPU資源去處理過期的數(shù)據(jù),從而影響緩存的響應(yīng)時間和吞吐量血筑。
  • 2.2 定期刪除
    redis會定期執(zhí)行清理過期key的任務(wù)绘沉,運(yùn)行頻率由redis.conf中的hz參數(shù)決定,取值范圍1~500豺总,默認(rèn)是10车伞,代表每秒運(yùn)行10次。

清理過程如下:

1)遍歷所有的db
2)從db中設(shè)置了過期時間的key的集合中隨機(jī)檢查20個key
3)刪除檢查中發(fā)現(xiàn)的所有過期key
4)如果檢查結(jié)果中25%以上的key已過期喻喳,則繼續(xù)重復(fù)執(zhí)行步驟2-3另玖,否則繼續(xù)遍歷下一個db

調(diào)大hz將會提高redis定期任務(wù)的執(zhí)行頻率,如果redis中包含很多過期key的話表伦,可以考慮將這個值調(diào)大谦去,但要注意同時也會增加CPU的壓力,redis作者建議這個值不要超過100蹦哼。

  • 2.3 惰性刪除
    定期刪除可能導(dǎo)致很多過期的key 到了時間并沒有被刪除掉鳄哭。這時就要使用到惰性刪除。在你獲取某個key的時候纲熏,Redis會檢查一下妆丘,這個key如果設(shè)置了過期時間并且過期了锄俄,是的話就刪除。
3勺拣、緩存淘汰策略
  • noeviction:內(nèi)存不足以寫入新數(shù)據(jù)的時候會直接報(bào)錯奶赠。
  • allKeys-lru:內(nèi)存不足以寫入新數(shù)據(jù)時候,移除最近最少使用的key药有。
  • allKeys-random: 內(nèi)存不足以寫入新數(shù)據(jù)時毅戈,隨機(jī)移除key。
  • volatile-lru: 內(nèi)存不足以寫入新數(shù)據(jù)時愤惰,在設(shè)置了過期時間的key當(dāng)中移除最近最少使用的key苇经。
  • volatile-random: 內(nèi)存不足以寫入新數(shù)據(jù)時,在設(shè)置了過期時間的key中羊苟,隨即移除key塑陵。
  • volatile-ttl: 內(nèi)存不足以寫入新數(shù)據(jù)時感憾,在設(shè)置了過期時間的key當(dāng)中移除最先過期的key蜡励。

通常情況下推薦優(yōu)先使用 allkeys-lru 策略。這樣可以充分利用 LRU 這一經(jīng)典緩存算法的優(yōu)勢阻桅,把最近最常訪問的數(shù)據(jù)留在緩存中凉倚,提升應(yīng)用的訪問性能。

allkeys-lru:有明顯的冷熱數(shù)據(jù)
allkeys-random:無明顯的冷熱數(shù)據(jù)嫂沉。

如果沒有設(shè)置過期時間的鍵值對稽寒,那么 volatile-lru,volatile-lfu趟章,volatile-random 和 volatile-ttl 策略的行為, 和 noeviction 基本上一致杏糙。
相關(guān)配置示范如下:

grep -E  'memory|hz' redis_6385/conf/redis.conf
maxmemory 20gb
maxmemory-policy allkeys-lru
maxmemory-samples 3
hz 50

maxmemory-samples:代表每次隨機(jī)取樣的個數(shù)是3。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚓土,一起剝皮案震驚了整個濱河市宏侍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜀漆,老刑警劉巖谅河,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異确丢,居然都是意外死亡绷耍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門鲜侥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來褂始,“玉大人,你說我怎么就攤上這事描函∑槊纾” “怎么了搂赋?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長益缠。 經(jīng)常有香客問我脑奠,道長,這世上最難降的妖魔是什么幅慌? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任宋欺,我火速辦了婚禮,結(jié)果婚禮上胰伍,老公的妹妹穿的比我還像新娘齿诞。我一直安慰自己,他們只是感情好骂租,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布祷杈。 她就那樣靜靜地躺著,像睡著了一般渗饮。 火紅的嫁衣襯著肌膚如雪但汞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天互站,我揣著相機(jī)與錄音私蕾,去河邊找鬼。 笑死胡桃,一個胖子當(dāng)著我的面吹牛踩叭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翠胰,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼容贝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了之景?” 一聲冷哼從身側(cè)響起斤富,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闺兢,沒想到半個月后茂缚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屋谭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年脚囊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐磁。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡悔耘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出我擂,到底是詐尸還是另有隱情衬以,我是刑警寧澤缓艳,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站看峻,受9級特大地震影響阶淘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜互妓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一溪窒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冯勉,春花似錦澈蚌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至交胚,卻和暖如春份汗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背承绸。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工裸影, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人军熏。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像卷扮,于是被迫代替她去往敵國和親荡澎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容