Redis的淘汰策略可以通過以下幾種方式進(jìn)行配置:
maxmemory-policy
:在Redis的配置文件中,可以通過設(shè)置maxmemory-policy
參數(shù)來指定淘汰策略。可選的值有:
volatile-lru
:在設(shè)置了過期時間的key中,優(yōu)先刪除最近最少使用的key。allkeys-lru
:不考慮過期時間,優(yōu)先刪除最近最少使用的key。volatile-random
:在設(shè)置了過期時間的key中,隨機(jī)刪除一個key。allkeys-random
:不考慮過期時間,隨機(jī)刪除一個key。volatile-ttl
:在設(shè)置了過期時間的key中,優(yōu)先刪除時間最早的key。noeviction
:不進(jìn)行淘汰策略,當(dāng)內(nèi)存不足時,所有寫入操作都會報錯。例如:maxmemory-policy allkeys-lru
maxmemory-samples
:在Redis的配置文件中,可以通過設(shè)置maxmemory-samples
參數(shù)來指定淘汰策略的采樣數(shù)量。默認(rèn)值為5,表示隨機(jī)選取5個key進(jìn)行比較,選擇淘汰其中最久未使用的key??梢愿鶕?jù)實際情況調(diào)整該值。
例如:maxmemory-samples 10
maxmemory
:在Redis的配置文件中,可以通過設(shè)置maxmemory
參數(shù)來指定Redis服務(wù)器最大的內(nèi)存限制。當(dāng)達(dá)到這個限制時,Redis會根據(jù)淘汰策略進(jìn)行數(shù)據(jù)的淘汰。
例如:maxmemory 100mb
需要注意的是,在Redis的淘汰策略中,volatile-lru
、volatile-random
和volatile-ttl
這三種策略只會對設(shè)置了過期時間的key進(jìn)行淘汰,而allkeys-lru
和allkeys-random
則會對所有的key進(jìn)行淘汰。