Redis的数据过期策略——Java全栈知识(18)

1、定期删除

定期删除:Redis 默认每隔 100 ms 就随机抽取一些设置了过期时间的 key, 并检查其是否过期,如果过期就删除。定期删除是 Redis 的主动删除策略,它可以确保过期的 key 能够及时被删除,

但是会占用 CPU 资源去扫描 key, 可能会影响 Redis 的性能。

2、惰性删除

惰性删除:当一个 key 过期时,不会立即从内存中删除,而是在访问这个 key 的时候才会触发删除操作。惰性删除是 Redis 的被动删除策略,它可以节省 CPU 资源,但是会导致过期的 key 始终保存在内存中,占用内存空间。

3、Redis 默认使用的数据过期策略

定期删除会在 Redis 设置的过期键的过期时间达到一定阈值时进行一次扫描,将过期的键删除,但不会立即释放内存,而是把这些键标记为"已过期",并放入一个专门的链表中。然后,在 Redis 的内存使用率达到定阈值时,Redis会对这些"已过期"的键进行一次内存回收操作,释放被这些键占用的内存空间。

而惰性删除则是在键被访问时进行过期检查,如果过期了则删除键并释放内存。需要注意的是,即使 Redis 进行了内存回收操作,也不能完全保证被删除的内存空间会立即被系统回收。

一般来说,这些被删除的内存空间会被操作系统标记为"可重用的内存",等待被重新分配。因此,即使 Redis 进行了内存回收操作,也并不能保证 Redis 所占用的内存空间会立即释放给操作系统。

相关推荐
专注API从业者4 分钟前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
大迪deblog8 分钟前
系统架构师-数据库-数据库设计
数据库·oracle·系统架构
leo__52020 分钟前
IEC 104 协议 C 语言实现
c语言·数据库
摇滚侠21 分钟前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql
若兰幽竹44 分钟前
【从零开始编写数据库系统:架构设计与实现】第5章:查询执行引擎与火山模型
数据库·架构·数据库内核·toydb
keep one's resolveY44 分钟前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
天空属于哈夫克31 小时前
企业微信API常见的错误和解决方案
java·数据库·企业微信
东风破1371 小时前
DM8达梦数据库备份、恢复原理介绍
数据库·oracle·dm达梦数据库
鹏子训2 小时前
AI记忆新思路:用SQLite替代向量数据库,去EMBEDDINGS化,谷歌开源Google Always On Memory Agent
数据库·人工智能·sqlite·embedding
Frank_refuel2 小时前
终端环境下:Ubuntu 22.04.1 安装 MySQL 数据库
数据库·mysql·ubuntu