在Redis里面,有三种过期策略分别是:定时过期、惰性过期、定期过期
定时过期:是指每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即对key进行清除。
该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量
惰性过期:是指被动访问某个key的时候,才会判断key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的
过期key没有再次被访问,从而不会被清除,占用大量内存。
但是这两种方案都有点极端,Redis里面还有另外一种折中的方案,就是定期过期。这种方案会周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频率。
这种方式可以通过调整定时扫描的时间间隔和每次扫描耗时,实现在不同情况下使得CPU和内存资源达到最优的平衡效果。
而Redis中同时使用了惰性过期和定期过期两种过期策略。