在redis缓存数据的时候,会设置过期时间,但是往往过期时间过了之后会自动删除(好像),怎么实现redis中的定期删除策略呢?
3条回答 默认 最新
- little_how 2022-01-07 16:20关注
redis删除过期数据的策略
1.惰性删除,就是访问该key时,发现key已过期,就进行删除并且返回空
2.随机删除,后台线程会scan redis设置了ttl的key,发现过期也会删除,如果删除的数据超过一定阈值,将继续scan重复操作
间隔时间默认是100ms也就是说redis其实是存在一些过期数据没被删除的
所以java也可以按照这个方式做:
惰性删除比较容易,定时随机删除就稍微复杂一点,可以使用数组+链表的方式存储设置了ttl的key,这样也可以基于下标范围来进行scan,然后进行定时删除。数组+链表要好好考虑效率和空间的权衡,这个就需要你自己慢慢思考实现了,也可以不使用数组+链表,使用tree结构的数据将过期时间从小到大排,然后遍历就行,实现方式很多,就看你想怎么做了。希望对你有帮助...
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 写uniapp时遇到的问题
- ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
- ¥15 找一个网络防御专家,外包的
- ¥100 能不能让两张不同的图片md5值一样,(有尝)
- ¥15 informer代码训练自己的数据集,改参数怎么改
- ¥15 请看一下,学校实验要求,我需要具体代码
- ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
- ¥20 MATLAB绘制两隐函数曲面的交线
- ¥15 求TYPCE母转母转接头24PIN线路板图
- ¥100 国外网络搭建,有偿交流