日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


Redis過期鍵刪除策略

 

三種不同的刪除策略:

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

在這三種策略中,第一種和第三種為主動刪除策略,而第二種則為被動刪除策略。

定時刪除

定時刪除策略對內(nèi)存是最友好的:通過使用定時器,定時刪除策略可以保證過期鍵會盡可能快地被刪除,并釋放過期鍵所占用的內(nèi)存。

另一方面,定時刪除策略的缺點是,它對CPU時間是最不友好的:在過期鍵比較多的情況看下,刪除過期鍵這一行為可能會占用相當(dāng)一部分CPU時間,在內(nèi)存不緊張但是CPU時間非常緊張的情況下,將CPU時間用在刪除和當(dāng)前無關(guān)的過期鍵上,無疑會對服務(wù)器的響應(yīng)時間和吞吐量造成影響。

例如,如果正有大量的命令請求在等待服務(wù)器處理,并且服務(wù)器當(dāng)前不缺少內(nèi)存,那么服務(wù)器應(yīng)該優(yōu)先將CPU時間用在處理客戶端的命令請求上面,而不是用在刪除過期鍵上面。

除此之外,創(chuàng)建一個定時器需要用到redis服務(wù)器中的時間事件,而當(dāng)前時間事件的實現(xiàn)方式-無序鏈表,查找一個事件的時間復(fù)雜度為O(N),并不能高效地處理大量時間事件。

因此,要讓服務(wù)器創(chuàng)建大量的定時器,從而實現(xiàn)定時刪除策略,在現(xiàn)階段來說并不現(xiàn)實。

惰性刪除

惰性刪除策略對CPU時間來說是最友好的:程序只會在取出鍵時才對鍵進行過期檢查,這可以保證刪除過期鍵的操作只會在非做不可的情況下進行,這個策略不會在刪除其他無關(guān)的過期鍵上花費任何CPU時間。

惰性刪除策略的缺點是,它對內(nèi)存是最不友好的:如果一個鍵已經(jīng)過期,而這個鍵又仍然保留在數(shù)據(jù)庫中,那么只要這個過期鍵不被刪除,它所占用的內(nèi)存就不會釋放。

在使用惰性刪除策略時,如果數(shù)據(jù)庫中有非常多的過期鍵,而這些過期鍵又恰好沒有被訪問到的話,那么它們也許永遠也不會被刪除(除非用戶手動執(zhí)行FLUSHDB),我們甚至可以將這種情況看做是一種內(nèi)存泄漏-無用的垃圾數(shù)據(jù)占用了大量的內(nèi)存,而服務(wù)器卻不會自己去釋放它們,這對于運行狀態(tài)非常依賴于內(nèi)存的Redis服務(wù)器來說,肯定不是一個好消息。

舉個例子,對于一些和時間有關(guān)的數(shù)據(jù),比如日志(log),在某個時間點之后,對它們的訪問就會大大減少,甚至不再訪問,如果這類過期數(shù)據(jù)大量地積壓在數(shù)據(jù)庫中,用戶以為服務(wù)器已經(jīng)自動將它們刪除了,但實際上這些鍵仍然存在,而且鍵所占用的內(nèi)存也沒有釋放,那么所造成的后果肯定是非常嚴重的。

定期刪除

定期刪除策略是前兩種策略的一種整合和折中:

  • 定期刪除策略每隔一段時間執(zhí)行一次刪除過期鍵操作,并通過限制刪除操作的執(zhí)行時長和頻率來減少刪除操作對CPU時間的影響。
  • 除此之外,通過定時刪除過期鍵,定期刪除策略有效的減少了因為過期鍵而帶來的內(nèi)存浪費。

定時刪除策略的難點是確定刪除操作執(zhí)行的時長和頻率:

  • 如果刪除操作執(zhí)行的太頻繁,或者執(zhí)行的時間太長,定期刪除策略就會退化為定時刪除策略,以至于將CPU時間過多地消息在刪除過期鍵上面。
  • 如果刪除操作執(zhí)行的太少,或者執(zhí)行時間太短,定期刪除策略又會和惰性刪除策略一樣,出現(xiàn)浪費內(nèi)存的情況。

因此,如果采用定期刪除的話,服務(wù)器必須根據(jù)情況,合理地設(shè)置刪除操作的執(zhí)行時長和執(zhí)行頻率。

Redis的過期鍵刪除策略

Redis服務(wù)器實際使用的是惰性刪除和定期刪除兩種策略:通過配合使用這兩種刪除策略,服務(wù)器就可以很好地合理使用CPU時間和避免浪費內(nèi)存空間之間取得平衡。

分享到:
標(biāo)簽:過期 Redis
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定