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

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

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

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

1. 定时删除

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

对键值对进行删除。

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

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

系统的性能,不推荐使用

2.惰性删除

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

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

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

3.定期删除

每隔一段时间进行删除

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

定期删除过期key

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

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

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

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

相关推荐
青山师2 分钟前
Java内存模型深度解析:Happens-Before规则与内存屏障实现原理
java·spring·面试·职场和发展·java程序员·jmm
Seven976 分钟前
万字长文背诵最新Agent常见试题
java
枕星而眠6 分钟前
一篇吃透 C++ 核心基础:初始化、引用、指针、内联、重载、右值引用
开发语言·数据结构·c++·后端·visual studio
XiYang-DING7 分钟前
【Java EE】网络通信中的 4 种交互模式
java·java-ee·交互
Royzst9 分钟前
一、集合概述(前置基础)
开发语言·windows·python
xinhuanjieyi10 分钟前
vscode插件,.sec / .inc / .sc 文件添加关键字高亮
java·服务器·vscode
Season45010 分钟前
C/C++的类型转换
c语言·开发语言·c++
平安的平安12 分钟前
Python大模型Function Calling实战:让AI拥有工具使用能力
开发语言·人工智能·python
xyq202415 分钟前
Vue.js 实例
开发语言
Mr_pyx19 分钟前
RAG知识库从零到一:简单搭建教程(java版)
java·spring·ai·rag