【Java面试题】redis的过期策略有哪些

redis通过设置过期时间来控制键值对的存活时长,过期时间可以通过expire , pexpire

expireat , pexpireat 等命令设置,String 类型数据可以通过setex命令设置过期时间。

以下介绍三种redis的过期策略:

1. 定时删除

在设置键值对的过期时间的同时,创建一个定时器,当键值对到了过期的时间,定时器会立即

对键值对进行删除。

优点: 保证对过期键的尽快删除,快速释放内存空间

缺点: redis中绝大多数键值对是携带过期时间的,这样会造成大量的定时器在执行,严重降低

系统的性能,不推荐使用

2.惰性删除

不持续关注key的过期时间,从数据库中获取key的时候,他会检查这个key是否过期,如果过期就会删除这个key

优点: 解决定时删除会占用大量cpu资源的问题

缺点: 对内存空间不友好,会造成内存空间的浪费

3.定期删除

每隔一段时间进行删除

**优点:**通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用

定期删除过期key

缺点: 在内存方面不如定时删除

在cpu资源方面不如惰性删除

redis采用的过期策略是定期删除惰性删除 相结合的方式

每隔一段时间,随机从键集合中选取一些键,进行检查,如果过期则删除

相关推荐
逆境不可逃2 分钟前
Hello-Agents 第二部分-第六章:框架开发实践
java·人工智能·分布式·学习·架构·rabbitmq
计算机安禾5 分钟前
【c++面向对象编程】第29篇:定位new(placement new):在指定内存上构造对象
开发语言·c++·算法
计算机安禾10 分钟前
【c++面向对象编程】第27篇:空类的大小为什么是1?——C++对象标识的秘密
开发语言·c++·算法
河阿里10 分钟前
Python容器:特性、区别和使用场景
开发语言·python
我不是8神10 分钟前
面试题:Gorutine泄露的条件有哪些?
java·开发语言
奇树谦11 分钟前
QListView和QListWidget区别详细说明
开发语言
爱好物理的一名程序员XiaoK11 分钟前
搭建网站时遇到的只显示空白界面
java
郭龙_Jack12 分钟前
Java并发包(JUC)深度解析:从LockSupport到云原生演进
开发语言·云原生·java并发编程
AC赳赳老秦12 分钟前
OpenClaw与思维导图工具联动:自动生成工作规划脑图、拆解任务节点,适配职场管理
java·大数据·服务器·数据库·python·php·openclaw
Highcharts.js14 分钟前
AI向量知识谱系图表创建示例代码|Highcharts网络图表(networkgraph)搭建案例
开发语言·前端·javascript·网络·信息可视化·编辑器·highcharts