用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
Redis 内存淘汰策略
Redis 内存淘汰策略
万有斥力
论坛元老
|
2025-3-23 06:00:22
|
显示全部楼层
|
阅读模式
楼主
主题
1712
|
帖子
1712
|
积分
5136
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Redis 内存淘汰策略
Redis 提供了多种
内存淘汰策略(Eviction Policy)
,用于在内存到达上限时决定如何删除数据,以便存入新的数据。我们详细介绍这些策略的
工作机制、实用场景、优缺点
。
1. Redis 内存淘汰策略分类
当 Redis
内存到达 maxmemory 限制
后,淘汰策略决定如那边理数据。Redis 的淘汰策略重要分为三大类:
(1) 拒绝写入(不删除数据)
(2) 仅淘汰带逾期时间的 Key
(3) 淘汰全部 Key
2. 详细的淘汰策略
(1) noeviction(拒绝写入)
机制
:当内存满时,Redis
不会删除任何 Key
,而是直接返回错误。
实用场景
:实用于
缓存不答应丢失
的情况,比方
会话管理
、
金融交易数据
等。
长处:
数据绝对安全,不会丢失任何 Key。
缺点:
大概导致 Redis 无法写入数据,影响业务正常运行。
实用于严格管控内存的场景,不实用于缓存(cache)用途。
(2) allkeys-lru(全部 Key 接纳 LRU 淘汰)
机制
:在
全部 Key(无论是否有 TTL)
中,淘汰近来最少使用(Least Recently Used, LRU)的 Key。
实用场景
:实用于
平常缓存
,比方 Web 页面缓存、短期存储等。
长处:
能够自动保留
近来访问的热门数据
,提升缓存掷中率。
缺点:
需要额外的 LRU 计算开销(但 Redis 内部已做优化)。
(3) volatile-lru(仅带逾期时间的 Key 接纳 LRU 淘汰)
机制
:只淘汰**带 TTL(逾期时间)**的 Key,按照 LRU 规则删除最少使用的 Key。
实用场景
:实用于
数据有明确逾期时间的缓存
(如 Web 页面缓存、令牌管理)。
长处:
不会影响永久存储的数据(无 TTL 的 Key)。
缺点:
假如带 TTL 的 Key 很少,或者都还未逾期,大概导致无法释放足够的内存,最终 Redis 仍然会写入失败。
(4) allkeys-random(全部 Key 随机淘汰)
机制
:在
全部 Key
中
随机选择一些 Key 举行淘汰
,不管是否有 TTL。
实用场景
:实用于不要求缓存掷中率的场景,如临时性存储、非核心数据。
长处:
低计算开销,不需要维护访问频率信息。
缺点:
缓存掷中率较低
,大概会删除热门数据,导致 Redis 效率降落。
(5) volatile-random(仅带逾期时间的 Key 随机淘汰)
机制
:只淘汰
带 TTL 的 Key
,随机选择一部门 Key 举行删除。
实用场景
:实用于
缓存体系
,数据有逾期时间,但访问频率无规律。
长处:
制止删除无 TTL 的数据。
缺点:
删除不够智能
,大概误删热门数据,影响缓存掷中率。
(6) volatile-ttl(仅带逾期时间的 Key,优先淘汰 TTL 最短的)
机制
:在
全部带 TTL 的 Key
中,
优先删除 TTL 最短的 Key
。
实用场景
:实用于
有明确逾期时间的数据
(如定期缓存的数据、会话管理)。
长处:
使
即将逾期的数据
优先被删除,符合一般业务逻辑。
缺点:
假如 TTL 设定不公道
(比如大量 Key 逾期时间雷同),仍大概影响掷中率。
3. Redis 6.0+ 的 LFU 淘汰策略
Redis 6.0 引入了
LFU(Least Frequently Used)
淘汰策略,进一步优化 LRU 算法。
(7) allkeys-lfu(全部 Key 接纳 LFU 淘汰)
机制
:在
全部 Key
中,淘汰
访问最少的 Key
。
实用场景
:实用于
热门数据变革较快的场景
,如新闻推荐、个性化广告缓存等。
长处:
能够自动保留
最常访问的 Key
,比 LRU 更智能。
缺点:
计算代价比 LRU 高
,但 Redis 内部做了优化(基于近似计数)。
(8) volatile-lfu(仅带 TTL 的 Key 接纳 LFU 淘汰)
机制
:在
带 TTL 的 Key
中,淘汰
访问最少的 Key
。
实用场景
:实用于
对缓存掷中率要求高,且数据带逾期时间
的情况。
长处:
不会误删
无 TTL 的 Key
,并且优先保留
访问频率高的 Key
。
缺点:
计算开销较高
,但 Redis 6.0 举行了优化。
4. 淘汰策略对比总结
淘汰策略实用范围实用场景长处缺点noeviction(默认淘汰策略)全部 Key
数据不能丢失的场景
(如金融体系)数据安全,不丢失
大概导致 Redis 写入失败
allkeys-lru全部 Key
平常缓存
(如 Web 缓存)适应
热门数据变革
,缓存掷中率高需要维护 LRUvolatile-lru仅带 TTL
数据有明确逾期时间的缓存
制止删除永久存储的数据
若带 TTL 的 Key 很少,大概无法释放足够内存allkeys-random全部 Key
临时存储
(不要求掷中率)计算简朴
缓存掷中率低
volatile-random仅带 TTL
随机淘汰缓存数据
计算简朴大概误删
热门数据
volatile-ttl仅带 TTL
定期缓存数据
(如会话管理)
优先删除即将逾期的数据
TTL 设定不公道大概影响掷中率
allkeys-lfu全部 Key
热门数据变革快
(如推荐体系)
优先保留高频访问数据
计算比 LRU 略高volatile-lfu仅带 TTL
高频访问缓存
(如广告缓存)
同时考虑访问频率和 TTL
计算比 LRU 略高
5. 选择符合的策略
数据不能丢失
➝ noeviction
平常缓存,保留热门数据
➝ allkeys-lru
数据有逾期时间,保留热门数据
➝ volatile-lru
不在意掷中率,只要释放内存
➝ allkeys-random
热门数据变革快,使用频率高
➝ allkeys-lfu
仅对带 TTL 的 Key 举行优化
➝ volatile-ttl / volatile-lfu
总结
Redis 接纳
LRU、LFU、TTL、随机淘汰
等方式,适应不同场景,公道选择淘汰策略,可以提高
缓存掷中率
和
数据管理效率
。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
万有斥力
论坛元老
这个人很懒什么都没写!
楼主热帖
MyBatis-Plus入门教程及基本API使用案 ...
深度理解 C# 中的 for 和 foreach ...
几个函数的使用例子:更新VBRK-XBLNR, ...
EFCore 动态拼接查询条件(表达式树方式 ...
OpenJDK和OracleJDK的区别说明
阿里巴巴Java开发手册(全册四版) ...
.net 发邮件的小工具,包含json,环境 ...
Excel 制作可视化看板的思路及操作 ...
2022年混过的那些SAP项目
跨域攻击的方法介绍
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
.Net
快速回复
返回顶部
返回列表