redis資料淘汰策略

2021-09-02 16:21:33 字數 1087 閱讀 5637

redis 每服務客戶端執行乙個命令的時候,會檢測使用的記憶體是否超額。如果超額,即進行資料淘汰。

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

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

volatile-lru:從已設定過期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰

volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰

volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰

allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰

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

no-enviction(驅逐):禁止驅逐資料

redis 確定驅逐某個鍵值對後,會刪除這個資料並,並將這個資料變更訊息發布到本地(aof 持久化)和從機(主從連線)。

設定:redis.conf 配置檔案中修改「maxmemory-policy」屬性值。 若是redis資料集中的key都設定了過期時間,那麼「volatile-ttl」策略是比較好的選擇。但如果key在達到最大記憶體限制時沒能夠迅速過 期,或者根本沒有設定過期時間。那麼設定為「allkeys-lru」值比較合適,它允許redis從整個資料集中挑選最近最少使用的key進行刪除 (lru淘汰演算法)。

通 過設定maxmemory為系統可用記憶體的45%或95%(取決於持久化策略)和設定「maxmemory-policy」為「volatile- ttl」或「allkeys-lru」(取決於過期設定),可以比較準確的限制redis最大記憶體使用率,在絕大多數場景下使用這2種方式可確保 redis不會進行記憶體交換。倘若你擔心由於限制了記憶體使用率導致丟失資料的話,可以設定noneviction值禁止淘汰資料。

redis資料淘汰策略

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

redis資料淘汰策略

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

Redis 資料淘汰策略

redis記憶體資料到達一定數量時就會執行資料淘汰策略,它提供了6種資料淘汰策略。voltile lru 從已經設定過期時間的資料集 server.db i expires 挑選最近最少使用的資料淘汰。voltile ttl 從已經設定過期時間的資料集 server.db i expires 中挑選...