Redis使用定期刪除和惰性刪除兩種方法來(lái)處理數(shù)據(jù)過(guò)期后的內(nèi)存釋放。
定期刪除:Redis默認(rèn)每秒會(huì)隨機(jī)抽取一些設(shè)置了過(guò)期時(shí)間的key進(jìn)行檢查,如果發(fā)現(xiàn)過(guò)期則刪除。可以通過(guò)配置maxmemory-policy
來(lái)設(shè)置定期刪除的策略,例如noeviction
表示不刪除任何數(shù)據(jù),allkeys-lru
表示按照LRU算法刪除數(shù)據(jù)等。
惰性刪除:當(dāng)客戶端嘗試讀取一個(gè)key時(shí),Redis會(huì)檢查該key是否過(guò)期,如果過(guò)期則刪除。這種方法可能會(huì)導(dǎo)致內(nèi)存占用過(guò)高,因?yàn)檫^(guò)期的數(shù)據(jù)不會(huì)立即釋放。
通過(guò)這兩種方法,Redis可以高效地處理數(shù)據(jù)過(guò)期后的內(nèi)存釋放。