1. 程式人生 > 其它 >【詳解】Redis過期鍵的刪除策略

【詳解】Redis過期鍵的刪除策略

Redis為什麼快?

redis的資料是儲存在記憶體中,記憶體的讀寫速度非常快,這也是Redis速度快的主要原因。官方給出的效能可以達到10萬/秒。Redis是基於C語言實現的,C語言偏向於底層作業系統,執行速度更快。Redis還使用了單執行緒的結構,預防了多執行緒可能產生的競爭問題。

Redis的資料主要儲存在記憶體中,記憶體是非常珍貴的計算機資源。如何提高記憶體的使用率非常重要。而Redis的鍵是有過期時間的,什麼時候將過期的鍵從記憶體中移除?是立即刪除?還是等待很多鍵都過期了一起刪除?還是定期刪除?是我們思考的問題。

Redis給出了以下幾種策略:

①立即刪除(定時刪除)

在設定鍵的過期時間的同時,建立一個定時器timer,當定時器檢測到鍵的過期時間來臨的時候,對鍵進行立即刪除的操作。

這種刪除策略對記憶體是比較友好的,能夠保證記憶體中的key一旦過期就立即從記憶體中刪除。但是當過期的鍵比較多的時候,佔用的CPU的時間也比較多,對伺服器的吞吐量也會造成影響。的

②惰性刪除(redis採用)

當發現鍵過期的時候不會立即刪除,但是當每次從鍵空間中獲取鍵時,檢查該鍵是否過期。如果過期就刪除該鍵,否則,就返回該鍵。

這種情況下,如果出現大量過期的鍵,會佔用大量的記憶體。

③定期刪除(redis採用)

每隔一段時間,程式就會對資料庫進行一次掃描,刪除一定數量的過期的鍵。實際應用中可以設定每隔多久掃描一次或者一次掃描多久來平衡CPU和記憶體的資源。

總結:

redis主要使用了惰性刪除、定期刪除的策略來解決redis中的過期的鍵刪除問題。