Redis是如何淘汰資料?

2021-09-29 23:43:53 字數 757 閱讀 2087

摘要: 大家在用redis做快取資料的時候有沒有估算過整個快取使用了多少空間呢?如果快取資料的大小超過了整個redis的記憶體大小,又會有什麼情況發生呢? 在redis中,我們是可以去設定最大使用記憶體大小server.maxmemory的,當redis記憶體資料集大小上公升到一定程度的時候,就會施行資料淘汰機制。

大家在用redis做快取資料的時候有沒有估算過整個快取使用了多少空間呢?如果快取資料的大小超過了整個redis的記憶體大小,又會有什麼情況發生呢?

在redis中,我們是可以去設定最大使用記憶體大小server.maxmemory的,當redis記憶體資料集大小上公升到一定程度的時候,就會施行資料淘汰機制。redis提供了一下6種資料淘汰機制

lru機制:

redis儲存了lru計數器server.lrulock,會定時的去更新(redis定時程式severcorn()),每個redis物件都會設定相應的lru值,每次訪問物件的時候,redis都會更新redisobject.lru。

lru淘汰機制:在資料集中隨機挑選幾個鍵值對,取出其中lru最大的鍵值對淘汰。所以,redis並不能保證淘汰的資料都是最近最少使用的,而是隨機挑選的鍵值對中的。

ttl機制:redis資料集結構中儲存了鍵值對過期時間表,即 redisdb.expires。

ttl淘汰機制:在資料集中隨機挑選幾個鍵值對,取出其中最接近過期時間的鍵值對淘汰。所以,redis並不能保證淘汰的資料都是最接近過期時間的,而是隨機挑選的鍵值對中的。

redis在每服務客戶端執行乙個命令的時候,會檢測使用的記憶體是否超額

Redis是如何淘汰key的?

淘汰原理 系統線上執行中,記憶體總是昂貴且有限的,在資料總量遠大於 redis 可用的記憶體總量時,為了最大限度的提公升訪問效能,redis 中只能存放最新最熱的有效資料。當 key 過期後,或者 redis 實際占用的記憶體超過閥值後,redis 就會對 key 進行淘汰,刪除過期的或者不活躍的 ...

redis資料淘汰策略

在 redis 中,允許使用者設定最大使用記憶體大小 server.maxmemory,在記憶體限定的情況下是很有用的。譬如,在一台 8g 機子上部署了 4 個 redis 服務點,每乙個服務點分配 1.5g 的記憶體大小,減少記憶體緊張的情況,由此獲取更為穩健的服務。redis 記憶體資料集大小上...

redis資料淘汰機制

在redis中,redis允許使用者更改設定最大記憶體maxmemory,在每次寫入或更新等操作時候,redis會檢查使用的記憶體,當記憶體達到最大值得時候,就會進行資料淘汰策略,從而換取記憶體出來 redis資料淘汰策略有6種 volatile lru 從已設定過期時間的資料集 server.db...