記憶體淘汰機制與演算法

2021-10-25 08:31:04 字數 711 閱讀 6092

在本文開始之前,我們先要明白:在 redis 中,過期策略和記憶體淘汰策略兩個完全不同的概念,但很多人會把兩者搞混。

首先,redis 過期策略指的是 redis 使用那種策略,來刪除已經過期的鍵值對;而 redis 記憶體淘汰機制指的是,當 redis 執行記憶體已經超過 redis 設定的最大記憶體之後,將採用什麼策略來刪除符合條件的鍵值對,以此來保障 redis 高效的執行。

只有在 redis 的執行記憶體達到了某個閥值,才會觸發記憶體淘汰機制,這個閥值就是我們設定的最大執行記憶體,此值在 redis 的配置檔案中可以找到,配置項為 maxmemory。

記憶體淘汰執行流程,如下圖所示:

查詢最大執行記憶體

我們可以使用命令config get maxmemory來檢視設定的最大執行記憶體,命令如下:

127.0.0.1:6379> config get maxmemory

1) "maxmemory"

2) "0"

我們發現此值竟然是 0,這是 64 位作業系統預設的值,當 maxmemory 為 0 時,表示沒有記憶體大小限制。

小貼士:32 位

Redis 記憶體淘汰機制

摘要redis是一款優秀的 開源的記憶體資料庫,我在閱讀redis原始碼實現的過程中,時時刻刻能感受到redis作者為更好地使用記憶體而費盡各種心思,例如最明顯的是對於同一種資料結構在不同應用場景下提供了基於不同底層編碼的實現 如壓縮列表 跳躍表等 今天我們暫時放下對redis不同資料結構的 來一起...

redis 記憶體淘汰機制

redis記憶體淘汰指的是使用者儲存的一些鍵被可以被redis主動地從例項中刪除,從而產生讀miss的情況,那麼redis為什麼要有這種功能?這就是我們需要 的設計初衷。redis最常見的兩種應用場景為快取和持久儲存,首先要明確的乙個問題是記憶體淘汰策略更適合於那種場景?是持久儲存還是快取?記憶體的...

redis記憶體淘汰機制

redis記憶體淘汰 指的是使用者儲存的一些鍵被可以被redis 主動地 從例項中刪除,從而產生讀miss的情況,那麼redis為什麼要有這種功能?這就是我們需要 的設計初衷。redis最常見的兩種應用場景為 快取和 持久儲存 首先要明確的乙個問題是記憶體淘汰策略更適合於那種場景?是持久儲存還是快取...