过期策略
定时扫描策略
- Redis会将设置了过期时间的key,单独放在一个字典里头,定时去遍历,如果过期了就删除;
- 但是!采用的是贪心策略,并不会会遍历所有key,你想想,单线程的redis难道一直在这里遍历不成;
- 所谓贪心比如:每次从过期字段拿到20个过期的,删除,然后下过期的是否还高于百分之25,如果高于,继续当前操作
- 当前每次扫描有时间限制:25ms没删完就不处理先,不能让客户端等呀!等空闲了就继续当前操作
- 所以我们也做好过期时间设置为随机数,不然统一时间到期,很消耗性能的;
惰性删除
- 定时扫描没有完全删除的怎么办呢?靠惰性删除了!
- 所谓惰性就是在客户端访问这个key的时候,看下是否过期,过期了就删除,也称之为:零散处理