亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis過期鍵刪除策略解讀

 更新時間:2025年01月15日 11:13:47   作者:Recently 祝祝  
Redis通過惰性刪除策略和定期刪除策略來管理過期鍵,惰性刪除策略在鍵被訪問時檢查是否過期并刪除,節(jié)省CPU開銷但可能導致過期鍵滯留,定期刪除策略定期掃描并刪除過期鍵,保證數據庫干凈但可能影響性能,Redis默認同時使用兩種策略

1.Redis使用兩種不同的策略來刪除過期鍵,分別是惰性刪除策略和定期刪除策略

1.1惰性刪除策略

當一個過期鍵被訪問時,Redis會檢查這個鍵是否過期。如果過期,就會立即刪除。如果沒有過期,Redis會像處理普通鍵一樣繼續(xù)處理它。這種方式被稱為惰性刪除,因為Redis只會在需要訪問一個鍵時才會檢查它是否過期,并在發(fā)現它過期后刪除它。這種策略的好處是能夠節(jié)省刪除鍵所帶來的 CPU 開銷,因為 Redis 只有在有需要時才會刪除鍵

1.2定期刪除策略

Redis也使用一種定期刪除策略來刪除過期鍵。在這種策略下,Redis會每隔一段時間掃描數據庫,查找所有已過期的鍵并將它們刪除。這種方式稱為定期刪除,因為Redis會定期執(zhí)行這個操作。這種策略的好處是能夠保證 Redis 數據庫中過期的鍵能夠及時被刪除,從而避免浪費空間。

1.3策略小結

Redis 的默認配置是同時使用惰性刪除和定期刪除兩種策略。當 Redis 同時使用這兩種策略時,惰性刪除策略能夠節(jié)省 CPU 開銷,定期刪除策略能夠保證過期鍵及時被刪除。

在一些特殊情況下,我們可能需要調整 Redis 的刪除策略,比如對于一些不太重要的數據,我們可以只使用惰性刪除策略來降低 Redis 的 CPU 開銷,對于一些比較重要的數據,我們可以只使用定期刪除策略來保證數據的正確性。這些調整可以通過 Redis 的配置參數來實現。

惰性刪除策略可以讓Redis更高效地使用內存,因為它只有在需要訪問一個鍵時才會檢查它是否過期。但是,它可能會導致過期鍵長時間滯留在內存中,直到下次被訪問。定期刪除策略則可以保證過期鍵及時被刪除,但可能會對性能產生一定的影響,因為它需要周期性地遍歷整個數據庫。為了平衡內存使用和性能,Redis通常會同時使用這兩種策略。

2.惰性刪除策略與定期刪除策略的使用

Redis 的惰性刪除策略和定期刪除策略默認都是開啟的,所以在通常情況下,我們不需要做任何特殊的配置即可使用這兩種策略。

如果你想要對 Redis 的刪除策略進行調整,可以通過以下方式進行配置:

惰性刪除策略

Redis 的惰性刪除策略是默認開啟的,如果你想要關閉惰性刪除,可以在 Redis 的配置文件中將以下參數設置為 no:

# 是否啟用惰性刪除
# 如果設置為 no,則 Redis 將不使用惰性刪除策略
# 默認為 yes
lazyfree-lazy-eviction no

定期刪除策略

Redis 的定期刪除策略是通過一個配置參數來控制的,這個參數默認值為 10 秒鐘,即 Redis 每隔 10 秒鐘會檢查一次過期鍵并刪除過期鍵。如果你想要改變這個值,可以在 Redis 的配置文件中修改以下參數:

# 設置 Redis 定期刪除策略的周期
# 默認為 10 秒鐘
# 單位為秒
hz 100

在上面的配置中,我們將 Redis 定期刪除策略的周期設置為 100 秒,即 Redis 每隔 100 秒鐘會檢查一次過期鍵并刪除過期鍵。

需要注意的是,當 Redis 同時使用惰性刪除和定期刪除兩種策略時,惰性刪除策略會優(yōu)先執(zhí)行,即 Redis 只有在有客戶端請求鍵時才會檢查鍵是否過期,定期刪除策略只有在惰性刪除策略無法滿足時才會起作用。

3.為什么Redis中會導致讀取到過期數據

雖然定期刪除策略可以釋放一些內存,但是,Redis 為了避免過多刪除操作對性能產生影響,每次隨機檢查數據的數量并不多。如果過期數據很多,并且一直沒有再被訪問的話,這些數據就會留存在 Redis 實例中。業(yè)務應用之所以會讀到過期數據,這些留存數據就是一個重要因素。

惰性刪除策略實現后,數據只有被再次訪問時,才會被實際刪除。如果客戶端從主庫上讀取留存的過期數據,主庫會觸發(fā)刪除操作,此時,客戶端并不會讀到過期數據。但是,從庫本身不會執(zhí)行刪除操作,如果客戶端在從庫中訪問留存的過期數據,從庫并不會觸發(fā)數據刪除。

4.從庫會給客戶端返回過期數據嗎?

Redis3.2版本之前,從庫會返回過期數據。Redis3.2之后從庫不會返回過期數據,會返回空值,但是還是有可能會讀到。

如果使用的是 Redis 3.2 之前的版本,那么,從庫在服務讀請求時,并不會判斷數據是否過期,而是會返回過期數據。在 3.2 版本后,Redis 做了改進,如果讀取的數據已經過期了,從庫雖然不會刪除,但是會返回空值,這就避免了客戶端讀到過期數據。所以,在應用主從集群時,盡量使用 Redis 3.2 及以上版本。

使用了 Redis 3.2 后的版本,還是會讀到過期數據,這跟 Redis 用于設置過期時間的命令有關系,有些命令給數據設置的過期時間在從庫上可能會被延后,導致應該過期的數據又在從庫上被讀取到

4.1設置數據過期時間命令說明

  1. EXPIRE 和 PEXPIRE:它們給數據設置的是從命令執(zhí)行時開始計算的存活時間;
  2. EXPIREAT 和 PEXPIREAT:它們會直接把數據的過期時間設置為具體的一個時間點。

主從庫全量同步,收到EXPIRE命令,主庫直接執(zhí)行,全量同步完成發(fā)送給從庫,從庫執(zhí)行的時候會在當前時間基礎上加上存活時間,過期時間明顯延后。

為了避免這種情況,在業(yè)務應用中使用 EXPIREAT/PEXPIREAT 命令,把數據的過期時間設置為具體的時間點,避免讀到過期數據

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Redis數據結構之跳躍表使用學習

    Redis數據結構之跳躍表使用學習

    這篇文章主要為大家介紹了Redis數據結構之跳躍表使用學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Redis和Lua實現分布式限流器的方法詳解

    Redis和Lua實現分布式限流器的方法詳解

    這篇文章主要給大家介紹了關于Redis和Lua實現分布式限流器的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis和Lua具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • 淺談Redis中的內存淘汰策略和過期鍵刪除策略

    淺談Redis中的內存淘汰策略和過期鍵刪除策略

    本文主要介紹了淺談Redis中的內存淘汰策略和過期鍵刪除策略,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 在CenOS系統(tǒng)下安裝和配置Redis數據庫的教程

    在CenOS系統(tǒng)下安裝和配置Redis數據庫的教程

    這篇文章主要介紹了在CenOS系統(tǒng)下安裝和配置Redis數據庫的教程,Redis是一個可基于內存的高性能NoSQL數據庫,需要的朋友可以參考下
    2015-11-11
  • YII2框架手動安裝Redis擴展的過程

    YII2框架手動安裝Redis擴展的過程

    這篇文章主要介紹了YII2框架手動安裝Redis擴展的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 淺談為什么單線程的redis那么快

    淺談為什么單線程的redis那么快

    本文主要介紹了為什么單線程的redis那么快,主要介紹了幾點原因,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Redis之RedisTemplate配置方式(序列和反序列化)

    Redis之RedisTemplate配置方式(序列和反序列化)

    這篇文章主要介紹了Redis之RedisTemplate配置方式(序列和反序列化),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Redis哨兵機制的使用詳解

    Redis哨兵機制的使用詳解

    文章講解了Redis哨兵機制的基本原理、主庫和從庫自動切換的過程、如何減少誤判、哨兵集群的組成和通信機制,以及哨兵在故障發(fā)生時如何選舉Leader進行主從切換
    2025-01-01
  • Redis數據庫分布式設計方案介紹

    Redis數據庫分布式設計方案介紹

    大家好,本篇文章主要講的是Redis數據庫分布式設計方案介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • redis通過位圖法記錄在線用戶的狀態(tài)詳解

    redis通過位圖法記錄在線用戶的狀態(tài)詳解

    這篇文章主要給大家介紹了關于redis如何通過位圖法記錄在線用戶的狀態(tài)的相關資料,文中先對位圖進行了一個簡單的介紹,而后通過示例代碼將實現的方法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11

最新評論