每个创建的KEY都设置一个定时器,到过期时间,则对KEY删除。
优点:定期删除数据,对内存友好 缺点:占用大量CPU去清除数据,影响缓存的响应时间和吞吐量2)惰性过期
在访问KEY时,才去判断它是否过期,过期就清除数据。
优点:节省CPU资源 缺点:对内存不友好3)定期过期
每隔一段时间,随机清除内存中过期的KEY。
它是定时过期和惰性过期的折中方案。
Redis中同时使用了惰性过期和定期过期两种过期策略。
volatile-lru:当内存不足以容纳新写入数据时,从设置了过期时间的key中使用LRU(最近最少使用)算法进行淘汰; allkeys-lru:当内存不足以容纳新写入数据时,从所有key中使用LRU(最近最少使用)算法进行淘汰。 volatile-random:当内存不足以容纳新写入数据时,从设置了过期时间的key中,随机淘汰数据;。 allkeys-random:当内存不足以容纳新写入数据时,从所有key中随机淘汰数据。 volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的key中,根据过期时间进行淘汰,越早过期的优先被淘汰; noeviction:默认策略,当内存不足以容纳新写入数据时,新写入操作会报错。redis4.0以后新增的淘汰策略
volatile-lfu:4.0版本新增,当内存不足以容纳新写入数据时,在过期的key中,使用LFU算法进行删除key。 allkeys-lfu:4.0版本新增,当内存不足以容纳新写入数据时,从所有key中使用LFU算法进行淘汰;



