惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
Recorded Future
Recorded Future
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
GbyAI
GbyAI
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
腾讯CDC
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
aimingoo的专栏
aimingoo的专栏
博客园 - Franky
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
月光博客
月光博客
博客园_首页
C
Check Point Blog
宝玉的分享
宝玉的分享
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tenable Blog
Vercel News
Vercel News
SecWiki News
SecWiki News
Security Latest
Security Latest
Microsoft Security Blog
Microsoft Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
阮一峰的网络日志
阮一峰的网络日志
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google Online Security Blog
Google Online Security Blog
N
News and Events Feed by Topic
Y
Y Combinator Blog
U
Unit 42
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
K
Kaspersky official blog
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
Jina AI
Jina AI

博客园 - abce

Redis 如何通过槽优化分布式系统中的键值存储 Redis 集群架构 Redis 的演进之路:从缓存到 AI 数据库(V1.0至8.4) Redis 的 aof-use-rdb-preamble 及其工作原理 MySQL主从之间具有不同数据类型的列的复制 MySQL 如何存储临时文件 理解mysql中的 local_infile 变量 pbm 还原物理备份提示executable file not found in $PATH. stderr MySQL 日志报错:Got packets out of order MySQL 8.0 已废弃的功能 sqlserver 删除job失败 查看 percona server for mongodb 的版本 MySQL 8 的哈希连接 MySQL 8.0 克隆插件及其原理 有效管理 MongoDB 日志和系统资源 MySQL 保留字需要了解的内容 MongoDB 数据碎片处理 MongoDB 8.0 的复制 min_examined_row_limit 对慢查询日志的影响
Redis 缓存过期和删除策略
abce · 2026-01-22 · via 博客园 - abce

2026-01-22 10:07  abce  阅读(35)  评论()    收藏  举报

Redis 实现了多种过期删除策略,用来高效管理内存并确保最佳性能。理解这些机制对于构建可扩展的高性能应用至关重要。

Redis采用懒惰删除与主动删除策略的组合方案。它不会立即删除过期键,而是运用智能算法在性能与内存使用之间取得平衡。

过期删除的核心策略

1.惰性删除(Lazy Deletion)

惰性删除是主要机制,过期键仅在被访问时才会被移除。当客户端尝试访问键时,Redis会检查该键是否已过期,若已过期,则立即删除该键并返回NULL;不会进行后台扫描或主动删除。

惰性删除的优点:

·CPU开销极低

·无需后台处理

·适用于高频访问的键值

惰性删除的缺点:

·过期键值若永不被访问将造成内存浪费

·内存使用模式难以预测

2.主动删除(Active Deletion)

Redis定期扫描并清除过期键值以防止内存膨胀。Redis内部维护一个定时任务,默认每秒运行10次(通过配置hz控制)​。定时任务中删除过期键逻辑采用了自适应算法,根据键的过期比例、使用快慢两种速率模式回收键。

算法实现细节:

·Redis每秒运行约10次过期检测循环

·每次循环从过期字典中随机抽取20个键值对

·若过期键值占比超25%,则重复执行上面的流程

·单次循环执行时间受限,以避免阻塞

image (2)

配置

# Redis configuration for active expiration
hz 10                    # Frequency of background tasks (10 Hz = 10 times/second)
active-expire-effort 1   # CPU effort for active expiration (1-10)

Redis 过期策略(驱逐策略)

当 Redis 达到内存限制时,会采用驱逐策略来释放空间:

# Configuration in redis.conf
maxmemory 2gb
maxmemory-policy allkeys-lru

1.策略类型

(1)noeviction(默认)

·不驱逐任何键

·内存达到上限时写入操作返回错误

·适用场景:不可丢失的关键数据

(2)allkeys-lru

·从所有键中移除最近最少使用的键

·适用场景:通用缓存场景

(3)allkeys-lfu

·移除访问频率最低的键

·适用场景:具有独特访问模式的应用程序

(4)volatile-lru

仅从设置了过期时间的键中移除最近最少使用键

适用场景:持久数据与临时数据混合存储

易失性-最近最少使用

(5)volatile-lfu

仅从设置了过期时间的键中移除访问频率最低的键

(6)allkeys-random

·随机移除键

适用场景:访问模式不可预测时

(7)volatile-random

随机移除设置了过期时间的键

(8)volatile-ttl

优先移除生存时间(TTL)最短的键

适用场景:时间敏感数据优先级处理

2.策略选择指导

image (3)

主从集群过期机制

在Redis集群中,过期处理遵循特定模式。

主从过期流程:

·仅主节点执行主动过期循环

·主节点向从节点发送显式DEL命令

·从节点不独立执行键过期(惰性删除机制除外)

image (4)