国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

Redis 過(guò)期鍵刪除策略

2019-02-26 18:30:19 7002

Redis 中數據庫鍵的過(guò)期時(shí)間都保存在過(guò)期字典中,當一個(gè)鍵過(guò)期了,Redis 存在三種不同的刪除策略:定時(shí)刪除、惰性刪除和定期刪除

定時(shí)刪除

定義

在設置鍵的過(guò)期時(shí)間的同時(shí)創(chuàng )建一個(gè)計時(shí)器,讓定時(shí)器在鍵過(guò)期時(shí)間來(lái)臨時(shí),立即執行對鍵的刪除操作。

定時(shí)刪除策略對內存是最友好的:通過(guò)使用定時(shí)器,定時(shí)刪除策略可以保證過(guò)期鍵會(huì )盡快被刪除,并且釋放過(guò)期鍵所占用的內存。

但是另一方面,它對 CPU 時(shí)間是嘴不友好的:在過(guò)期鍵比較多的情況下,刪除過(guò)期鍵這一行為可能會(huì )占用相當一部分的 CPU 時(shí)間,在內存不緊張但是 CPU 時(shí)間緊張的情況下,將 CPU 時(shí)間用在刪除和當前任務(wù)無(wú)關(guān)的過(guò)期鍵上,無(wú)疑會(huì )對服務(wù)器的響應時(shí)間和吞吐量造成影響。

惰性刪除

定義

放任過(guò)期鍵不管,但是每次從鍵空間中獲取鍵時(shí)都檢查取得的鍵是否過(guò)期,如果過(guò)期的話(huà),就刪除該鍵;如果沒(méi)有過(guò)期則返回該鍵。

惰性刪除策略對 CPU 時(shí)間來(lái)說(shuō)是最友好的,但是它對內存是最不友好的:如果一個(gè)鍵已經(jīng)過(guò)期,而這個(gè)鍵又恰好沒(méi)有被訪(fǎng)問(wèn)到的話(huà),那么它可能永遠都不回被刪除,甚至可以將這種情況視為一種內存泄漏 —— 無(wú)用的垃圾數據占用了大量的內存,而服務(wù)器卻不能主動(dòng)去釋放它們,這對于運行狀態(tài)非常依賴(lài)于內存的 Redis 服務(wù)器來(lái)說(shuō),并不是一個(gè)好消息。

定期刪除

定義

每隔一段時(shí)間,程序都會(huì )對數據庫進(jìn)行一次檢查,刪除里面的過(guò)期鍵。至于要刪除多少過(guò)期鍵,以及要檢查多少個(gè)數據庫,則由算法決定。

從上面對定時(shí)刪除和惰性刪除的討論來(lái)看,這兩種刪除方式在單一使用時(shí)都有非常明顯的缺陷,定期刪除策略可以看作是兩種策略的一種整合和折中:

  • 定期刪除策略每隔一段時(shí)間執行一次刪除過(guò)期鍵操作,并通過(guò)限制刪除操作執行的時(shí)長(cháng)和頻率來(lái)減少刪除操作對 CPU 時(shí)間的影響。

  • 通過(guò)定期刪除過(guò)期鍵,定期刪除策略有效減少了因為過(guò)期鍵而帶來(lái)的內存浪費

但是定期刪除策略的難點(diǎn)是確定刪除操作執行的時(shí)長(cháng)和頻率:

  • 如果刪除操作執行太過(guò)頻繁,或者執行的時(shí)間太長(cháng),定期刪除策略就會(huì )退化成定時(shí)刪除策略,以至于 CPU 時(shí)間過(guò)多的消耗在刪除過(guò)期鍵上

  • 如果刪除操作執行的太少,或者執行的時(shí)間太短,定期刪除策略又會(huì )和惰性刪除策略一樣,出現浪費內存的情況


提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->