Redis記憶體管理

2021-09-25 03:24:13 字數 1093 閱讀 9489

不同資料型別的大小限制。

最大記憶體控制

各種資料結果記憶體壓縮配置。

大小超出壓縮範圍,溢位後redis將自動將其轉換為正常大小。

主動處理,redis主動觸發檢測key是否過期,每秒執行10次。過程如下:

被動處理

rdb方式

aof方式

過期資料的計算和計算機本身的時間是有直接聯絡的。

配置檔案中設定:maxmemory-policy noeviction。

動態調整:config set maxmemory-policy noeviction。

**策略

說明noeviction

客戶端嘗試執行會讓更多記憶體被使用的命令直接報錯

allkeys-lru

在所有key裡執行lru演算法

volatile-lru

在所有已經過期的key裡執行lru演算法

volatile-lfu

使用過期的key裡執行lfu演算法

allkeys-lfu

使用近似lfu驅逐任何key

allkeys-random

在所有key裡隨機**

volatile-random

再已經過期的key裡隨機**

volatile-ttl

**已經過期的key,並且優先**存活時間(ttl)較短的key

lru(least recently used,最近最少使用):根據資料的歷史訪問記錄來進行淘汰資料。

核心思想:如果資料最近被訪問過,那麼將來被訪問的機率也更高。

注意:redis的lru演算法並非完整的實現,完整的lru需要太多的記憶體。

方法:通過對少量keys進行取樣(50%),然後**其中的乙個最少訪問的key。

lfu(least frequently used):根據歷史的資料訪問頻率來淘汰資料。

核心思想:如果資料過去被訪問多次,那麼將來被訪問的頻率也會更高。

redis的實現是近似的,每次對key進行訪問時,用基於頻率的對數計數器來記錄訪問次數,同時這個計數器會隨時間推移而減小。

啟用lfu演算法後,可以使用熱點資料分析功能。(redis-cli --hotkeys)。

Redis 記憶體管理

一 記憶體管理 命令作用 expire key seconds 設定超時時間戳,單位為秒 ttl key 檢視超時時間,1 表示沒有超時時間,2表示已經超時 persist key 持久化key 取消超時時間 2 spring操作 runwith springjunit4classrunner.cl...

Redis的記憶體管理 記憶體淘汰

給redis設定一些位元組大小去限制記憶體使用,當redis達到所設定的記憶體大小,redis將會刪除一些key,根據所制定的記憶體淘汰策略。如果redis不能刪除key根據所給的策略,或者如果當前的淘汰策略是novication,有新的key進來的時候,redis將回出錯,比如set操作 lpus...

Redis快取系列 三 redis記憶體管理

redis中,它的key的型別都是string,大小為512m 而value的型別的大小又不太相同 我們在啟動redis服務的時候,可以在它的配置檔案redis.conf中來配置它的最大記憶體閾值和達到閾值的執行策略,配置如下 最大記憶體控制 maxmemory 1gb 達到最大閾值的淘汰策略 下邊...