1、在未达到最大内存使用限制时
定时删除
描述 :为每个键设置一个定时器,一旦过期时间到了,则将键删除
缺点:对内存很友好,但是对 CPU 不友好,因为每个定时器都会占用一定的 CPU 资源
惰性删除
描述:不管键有没有过期都不主动删除,等到每次去获取键时再判断是否过期,如果过期就删除该键,否则返回键对应的值
缺点:对内存不够友好,可能会浪费很多内存
定期扫描
描述:系统每隔一段时间就定期扫描一次,发现过期的键就进行删除
缺点:定期的频率要结合实际情况掌控好,使用这种方案有一个缺陷就是可能会出现已经过期的键也被返回
2、达到最大内存以后,会根据配置项maxmenory-policy来进行相应的淘汰策略
volatile-lru:对设置了过期时间的键进行近似LRU算法
LRU,即:最近最少使用淘汰算法(Least Recently Used)
allkeys-lru:对所有件进行近似LRU算法
volatile-lfu:对设置了过期时间的键进行近似LFU算法
LFU,即:最不经常使用淘汰算法(Least Frequently Used)
allkeys-lfu:对所有件进行近似LFU算法
volatile-random:随机淘汰设置了过期时间的键
allkeys-random:随机淘汰键
volatile-ttl:淘汰最接近过期时间的键
noeviction:啥事也不干