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

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

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

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

1. 定时删除

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

对键值对进行删除。

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

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

系统的性能,不推荐使用

2.惰性删除

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

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

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

3.定期删除

每隔一段时间进行删除

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

定期删除过期key

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

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

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

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

相关推荐
guygg88几秒前
MATLAB 进行长方形房间的混响仿真
开发语言·算法
其实防守也摸鱼1 分钟前
软件安全与漏洞--实验 软件安全设计
开发语言·网络·python·安全·软件安全·实验·软件安全设计
asdfg12589632 分钟前
无用空数组的用法:numberList.toArray(new Integer[0])
java·开发语言
悠哉清闲3 分钟前
生成pcm文件并播放查看波形
java·pcm
Devin~Y5 分钟前
大厂Java面试实录:Spring Boot/JPA/Redis/Kafka/K8s 可观测性 + Spring AI RAG/Agent(小Y翻车现场)
java·spring boot·redis·mybatis·hibernate·spring mvc·jpa
likerhood6 分钟前
认识 JVM:Java 程序背后的那台“隐形计算机”
java·开发语言·jvm
wangchunting6 分钟前
Java9功能更新说明
java·开发语言
~|Bernard|6 分钟前
三,go语言中channel的底层原理
开发语言·后端·golang
hikktn7 分钟前
30万数据导出从2分钟到15秒:一场与内存溢出的生死较量【宗申集团】
java
武帝为此7 分钟前
【软件开发日志介绍】
java·前端·数据库