如愿却不如愿 2022-01-07 15:45 采纳率: 57.1%
浏览 264
已结题

如何在java代码中实现redis的定期删除?

在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结构的数据将过期时间从小到大排,然后遍历就行,实现方式很多,就看你想怎么做了。

    希望对你有帮助...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 修改了问题 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 写uniapp时遇到的问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流