在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结构的数据将过期时间从小到大排,然后遍历就行,实现方式很多,就看你想怎么做了。希望对你有帮助...
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
- ¥15 求SC-LIWC词典!
- ¥20 有关esp8266连接阿里云
- ¥15 C# 调用Bartender打印机打印
- ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
- ¥50 C#编程中使用printDocument类实现文字排版打印问题
- ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。
- ¥15 已知隐函数其中一个变量τ的具体值,求另一个变量
- ¥15 r语言Hurst指数
- ¥15 RT-Thread Studio编译问题