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

推荐订阅源

K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
W
WeLiveSecurity
L
LINUX DO - 最新话题
IT之家
IT之家
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
Google Online Security Blog
Google Online Security Blog
Forbes - Security
Forbes - Security
N
News | PayPal Newsroom
T
Troy Hunt's Blog
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
S
Security Affairs
N
News and Events Feed by Topic
S
Securelist
美团技术团队
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
J
Java Code Geeks
A
Arctic Wolf
Blog — PlanetScale
Blog — PlanetScale
量子位
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The GitHub Blog
The GitHub Blog
Webroot Blog
Webroot Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
云风的 BLOG
云风的 BLOG
Apple Machine Learning Research
Apple Machine Learning Research
K
Kaspersky official blog
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
Cisco Talos Blog
Cisco Talos Blog
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
U
Unit 42
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
宝玉的分享
宝玉的分享
Hacker News - Newest:
Hacker News - Newest: "LLM"
MongoDB | Blog
MongoDB | Blog
S
Security @ Cisco Blogs

博客园 - 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)