redis过期删除
redis的键可以设置过期时间,但是并不是每个键一到过期时间就会立即删除,redis不可能给每个设置过期时间的key上添加一个定时器来监视是否过期,CPU根本承受不了如此多的定时线程
注意:我使用的版本是6.0.10,不同版本可能略有差别
删除策略
目前大众的删除策略有以下几种:
- 定时删除 在设置键的同时创建定时器,过期时间到了就执行对键的删除,这种策略对内存使用率有优势,但是占用CPU资源太多
- 定期删除 每隔特定时间对数据库进行一次扫描,检测并删除其中过期的键值对
- 惰性删除 键值对过期暂时不进行删除,当获取键时先查看是否已经过期,过期则进行删除,这种策略可能会由于一些过期key一直没有被访问,浪费一定的内存
redis采用的策略是定期删除+惰性删除
定期删除是指每隔一段时间去检查是否有过期的key,如果有则删除
惰性删除是指在获取key的时候检查一下这个key是否过期