首先,我们要知道Redis的数据过期策略是惰性删除和定期删除结合使用。
面试题:
Redis支持8种数据淘汰策略:
noeviction
:不淘汰任何key,当内存满时,不写入任何新数据。默认采用这种方式
volatile-ttl
:对设置了 ttl 的 key,比较 key 剩余的 ttl 的值,ttl 越小越先被淘汰
allkey-random
:所有的 key 随机删除
volatile-random
:对设置了 ttl 的 key 随机删除
allkey-lru
:对所有的 key 采用LRU算法进行淘汰
volatile-lru
:对设置了 ttl 的 key 采用LRU算法进行淘汰
allkey-lfu
:对所有的 key 采用LFU算法进行淘汰
volatile-lru
:对设置了 ttl 的 key 采用LFU算法进行淘汰
LRU
:全称 Least Recently Used,即最近最少使用。当前时间减去最后一次访问时间,这个值越大,则被先淘汰。
例如:key1 是 3s 前访问,key2 是 9s 前访问,那么删除的是 key2
LFU
:全称 Least Frequently Used,即最少频率使用。统计每个 key 访问频率,值越小被先淘汰
例如:key1 最近 5s 访问 4 次,key2 最近 5s 访问 9 次,那么删除 key1
面试题: