Redis的資料淘汰策略

2021-09-29 18:07:20 字數 827 閱讀 8317

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

redis 記憶體資料集大小上公升到一定大小的時候,就會施行資料淘汰策略。redis 提供 6種資料淘汰策略:

1. volatile-lru:從設定過期時間的資料集(server.db[i].expires)中挑選出最近最少使用的資料淘汰。沒有設定過期時間的key不會被淘汰,這樣就可以在增加記憶體空間的同時保證需要持久化的資料不會丟失。

2. volatile-ttl:除了淘汰機制採用lru,策略基本上與volatile-lru相似,從設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰,ttl值越大越優先被淘汰。

3. volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰。當記憶體達到限制無法寫入非過期時間的資料集時,可以通過該淘汰策略在主鍵空間中隨機移除某個key。

4. allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰,該策略要淘汰的key面向的是全體key集合,而非過期的key集合。

5. allkeys-random:從資料集(server.db[i].dict)中選擇任意資料淘汰。

6. no-enviction:禁止驅逐資料,也就是當記憶體不足以容納新入資料時,新寫入操作就會報錯,請求可以繼續進行,線上任務也不能持續進行,採用no-enviction策略可以保證資料不被丟失,這也是系統預設的一種淘汰策略。

redis資料淘汰策略

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

redis資料淘汰策略

redis 每服務客戶端執行乙個命令的時候,會檢測使用的記憶體是否超額。如果超額,即進行資料淘汰。在 redis 中,允許使用者設定最大使用記憶體大小 server.maxmemory,在記憶體限定的情況下是很有用的。譬如,在一台 8g 機子上部署了 4 個 redis 服務點,每乙個服務點分配 1...

redis資料淘汰策略

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