深入理解Redis(四)----Redis的內(nèi)存回收原理,及內(nèi)存過期淘汰策略詳解

Redis中一個鍵過期了,什么時候會被刪除呢?有以下三種策略

定時刪除: 在設(shè)置鍵過期時間的同時,創(chuàng)建一個定時器,讓定時器在過期時間來臨時,立即執(zhí)行對鍵的刪除操作
惰性刪除:放任鍵過期不管,但是每次從鍵空間獲取鍵時,都檢查取得的鍵是否過期,過期的話就刪除該鍵,沒過期的話就返回該鍵
定期刪除:每隔一段時間,程序就對數(shù)據(jù)庫進行一次檢查,刪除里面的過期鍵,至于要刪除多少個過期鍵,檢查多少個數(shù)據(jù)庫,由算法決定


定時刪除

定時刪除策略是內(nèi)存友好的.通過定時器,定時刪除策略可以保證過期鍵會盡可能的被刪除,并釋放過期鍵所占用的內(nèi)存
缺點是對CPU時間不友好,在過期鍵較多的情況下,刪除過期鍵會占用一部分CPU時間,在內(nèi)存不緊張但CPU時間緊張的情況下,將CPU時間用在刪除和當前任務(wù)無關(guān)的過期鍵上,無疑會對服務(wù)器的響應(yīng)時間和吞吐量造成影響.


惰性刪除

惰性刪除對CPU時間是友好的,程序只有在取出鍵時會進行過期檢查,這樣可以保證刪除過期鍵操作只會在非做不可的情況下進行,并且刪除的目標僅限于當前處理的鍵,這個策略不會再刪除其他無關(guān)的過期鍵上花費任何CPU時間
缺點是對內(nèi)存最不友好的,如果一個鍵已經(jīng)過期,而這個鍵又仍然保留在數(shù)據(jù)庫中,只要這個鍵不被刪除,他所占用的內(nèi)容就不會釋放.


定期刪除

定期刪除策略是前兩種策略的整合和折中:
定期刪除策略每隔一段時間執(zhí)行一次刪除過期鍵操作,并且通過限制操作執(zhí)行的時長和頻率來減少刪除操作對CPU時間的影響.并且通過定期刪除過期鍵,有效的減少因為過期鍵而帶來的內(nèi)存浪費

定期刪除的難點是確定刪除操作執(zhí)行的時長和頻率
如果刪除操作執(zhí)行的太頻繁,或者執(zhí)行時間太長,定期刪除就會退化成定時刪除,將CPU時間過多的浪費在刪除過期鍵
如果刪除操作執(zhí)行的太少或者太短,又會和惰性刪除一樣,出現(xiàn)浪費內(nèi)存的情況


Redis所用策略

\color{red}{惰性刪除和定期刪除相結(jié)合,但是Redis定期刪除是隨機抽取機制,不可能掃描刪除掉所有的過期Key,因此需要內(nèi)存淘汰機制.}


內(nèi)存淘汰機制

redis中當內(nèi)存超過限制時拷姿,按照配置的策略,淘汰掉相應(yīng)的key-value旱函,使得內(nèi)存可以繼續(xù)留有足夠的空間保存新的數(shù)據(jù)响巢。redis 確定驅(qū)逐某個鍵值對后,會刪除這個數(shù)據(jù)棒妨,并將這個數(shù)據(jù)變更消息發(fā)布到本地(AOF 持久化)和從機(主從連接)踪古。
Redis有6種策略(默認volatie-lru)

volatile-lru:使用LRU算法進行數(shù)據(jù)淘汰(淘汰上次使用時間最早的,且使用次數(shù)最少的key)券腔,只淘汰設(shè)定了有效期的key 伏穆;
allkeys-lru:使用LRU算法進行數(shù)據(jù)淘汰,所有的key都可以被淘汰纷纫;
volatile-random:隨機淘汰數(shù)據(jù)枕扫,只淘汰設(shè)定了有效期的key;
allkeys-random:隨機淘汰數(shù)據(jù)辱魁,所有的key都可以被淘汰烟瞧;
volatile-ttl:淘汰剩余有效期最短的key;
no-enviction:不刪除任意數(shù)據(jù)(但redis還會根據(jù)引用計數(shù)器進行釋放),這時如果內(nèi)存不夠時染簇,會直接返回錯誤 参滴。


LRU數(shù)據(jù)淘汰機制

在服務(wù)器配置中保存了 lru 計數(shù)器 server.lrulock,會定時(redis 定時程序 serverCorn())更新剖笙,server.lrulock 的值是根據(jù) server.unixtime 計算出來的卵洗。

在數(shù)據(jù)集中隨機挑選幾個鍵值對,取出其中 lru 最小的鍵值對淘汰。所以过蹂,你會發(fā)現(xiàn)十绑,redis并不是保證取得所有數(shù)據(jù)集中最近最少使用(LRU)的鍵值對,而只是隨機挑選的幾個鍵值對中的酷勺。

二本橙、TTL數(shù)據(jù)淘汰機制

從過期時間的表中隨機挑選幾個鍵值對,取出其中 ttl 最大的鍵值對淘汰脆诉。同樣你會發(fā)現(xiàn)甚亭,redis并不是保證取得所有過期時間的表中最快過期的鍵值對,而只是隨機挑選的幾個鍵值對中的击胜。

過期鍵刪除策略和內(nèi)存淘汰機制之間的關(guān)系:

過期鍵刪除策略強調(diào)的是對過期健的操作亏狰,如果有健過期了,而內(nèi)存還足夠偶摔,不會使用內(nèi)存淘汰機制暇唾,這時也會使用過期健刪除策略刪除過期健。
內(nèi)存淘汰機制強調(diào)的是對內(nèi)存的操作辰斋,如果內(nèi)存不夠了策州,即使有的健沒有過期,也要刪除一部分宫仗,同時也針對沒有設(shè)置過期時間的健够挂。


引用(本文章只供本人學習以及學習的記錄,如有侵權(quán)藕夫,請聯(lián)系我刪除)

Redis的過期刪除策略(和內(nèi)存淘汰機制)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孽糖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子汁胆,更是在濱河造成了極大的恐慌梭姓,老刑警劉巖霜幼,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫩码,死亡現(xiàn)場離奇詭異,居然都是意外死亡罪既,警方通過查閱死者的電腦和手機铸题,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琢感,“玉大人丢间,你說我怎么就攤上這事【哉耄” “怎么了烘挫?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵清酥,是天一觀的道長。 經(jīng)常有香客問我噪奄,道長玷过,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任卤橄,我火速辦了婚禮绿满,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窟扑。我一直安慰自己喇颁,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布嚎货。 她就那樣靜靜地躺著橘霎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殖属。 梳的紋絲不亂的頭發(fā)上茎毁,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音忱辅,去河邊找鬼七蜘。 笑死,一個胖子當著我的面吹牛墙懂,可吹牛的內(nèi)容都是我干的橡卤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼损搬,長吁一口氣:“原來是場噩夢啊……” “哼碧库!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巧勤,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嵌灰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颅悉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沽瞭,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年剩瓶,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹溃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡延曙,死狀恐怖豌鹤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枝缔,我是刑警寧澤布疙,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響灵临,放射性物質(zhì)發(fā)生泄漏拣挪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一俱诸、第九天 我趴在偏房一處隱蔽的房頂上張望菠劝。 院中可真熱鬧,春花似錦睁搭、人聲如沸赶诊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舔痪。三九已至,卻和暖如春锌唾,著一層夾襖步出監(jiān)牢的瞬間锄码,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工晌涕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滋捶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓余黎,卻偏偏與公主長得像重窟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惧财,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

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