如題,華為云Redis默認(rèn)的數(shù)據(jù)逐出策略是什么?
逐出指將數(shù)據(jù)從緩存中刪除,以騰出更多的存儲(chǔ)空間容納新的緩存數(shù)據(jù)。當(dāng)前版本支持在配置運(yùn)行參數(shù)中修改逐出策略。
Redis實(shí)例支持在配置運(yùn)行參數(shù)中修改數(shù)據(jù)逐出策略。
在達(dá)到內(nèi)存上限(maxmemory)時(shí)Redis支持選擇以下6種數(shù)據(jù)逐出策略:
noeviction:在這種策略下,如果緩存達(dá)到了配置的上限,實(shí)例將不再處理客戶端任何增加緩存數(shù)據(jù)的請(qǐng)求,比如寫命令,實(shí)例直接返回錯(cuò)誤給客戶端。緩存達(dá)到上限后,實(shí)例只處理刪除和少數(shù)幾個(gè)例外請(qǐng)求。
allkeys-lru:根據(jù)LRU(Least recently used,最近最少使用)算法嘗試回收最少使用的鍵,使得新添加的數(shù)據(jù)有空間存放。
volatile-lru:根據(jù)LRU(Least recently used,最近最少使用)算法嘗試回收最少使用的鍵,但僅限于在過期集合的鍵,使得新添加的數(shù)據(jù)有空間存放。
allkeys-random:回收隨機(jī)的鍵使得新添加的數(shù)據(jù)有空間存放。
volatile-random:回收隨機(jī)的鍵使得新添加的數(shù)據(jù)有空間存放,但僅限于在過期集合的鍵。
volatile-ttl:回收在過期集合的鍵,并且優(yōu)先回收存活時(shí)間(TTL)較短的鍵,使得新添加的數(shù)據(jù)有空間存放。
說明:
當(dāng)沒有鍵滿足回收前提條件時(shí),數(shù)據(jù)逐出策略volatile-lru、volatile-random、volatile-ttl與noeviction策略相同,具體見上文noeviction介紹。