news 2026/8/6 23:25:15

说说Redis的内存淘汰策略?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
说说Redis的内存淘汰策略?

大家好,我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助;

说说Redis的内存淘汰策略?

超硬核AI学习资料,现在永久免费了!

Redis 的内存淘汰策略(Eviction Policy)是在内存达到上限(由maxmemory参数控制)时,用于决定哪些键需要被删除以释放空间的机制。理解这些策略对于优化性能和防止 OOM(Out of Memory)异常非常关键。


一、Redis 的内存淘汰触发条件

当:

used_memory > maxmemory

时,Redis 会触发内存淘汰机制。
如果没有配置maxmemory(默认不限制),Redis 会一直增长直到操作系统层面内存不足。


二、Redis提供的内存淘汰策略

可通过命令:

CONFIG SET maxmemory-policy <policy_name>

来设置。
可选策略如下:

策略名称描述
noeviction默认策略。当内存不足时,写入命令(如 SET、LPUSH)直接报错,不会删除任何键。只读命令仍可执行。
volatile-lru仅在设置了过期时间的键中,使用 LRU 算法淘汰最久未被访问的键。
allkeys-random在所有键中随机删除。
volatile-random仅在设置了过期时间的键中随机删除。
volatile-ttl仅在设置了过期时间的键中,优先删除剩余生存时间(TTL)最短的键。
allkeys-lfu在所有键中,使用 LFU(最少使用频率)算法淘汰最少访问的键。
volatile-lfu仅在设置了过期时间的键中,使用 LFU 算法淘汰最少访问的键。

三、LRU 与 LFU 的区别

LRU(Least Recently Used)

LFU(Least Frequently Used)

-根据“访问次数”判断冷热;

四、常见使用场景与推荐策略

场景推荐策略说明
缓存系统(典型使用场景)allkeys-lru自动淘汰最久未访问的数据,保持热点数据。
临时数据存储,部分 key 有过期时间volatile-lruvolatile-ttl仅淘汰有过期时间的数据,保留永久数据。
数据分布均匀、访问随机allkeys-random简单高效,但命中率较低。
高频访问稳定场景allkeys-lfu通过访问频率判断热度,更智能。
禁止删除,数据必须保留noeviction保证数据安全,但可能导致写入失败。

五、相关配置参数

# 设置最大内存 CONFIG SET maxmemory 512mb # 设置淘汰策略 CONFIG SET maxmemory-policyallkeys-lfu # 设置LRU采样数(默认5) CONFIG SET maxmemory-samples 10

maxmemory-samples越大,淘汰策略越接近真实的 LRU/LFU,但性能开销也会增加。


六、总结

分类策略说明
不淘汰noeviction内存满时报错
随机淘汰allkeys-random / volatile-random随机删除键
基于访问频次allkeys-lru / volatile-lru / allkeys-lfu / volatile-lfu根据访问热度淘汰
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 15:35:27

数字孪生平台厂商盘点:这6个玩家的技术路径/产品核心/市场格局解读

数字孪生&#xff0c;作为实现物理世界与数字空间实时交互、仿真优化的关键技术&#xff0c;正成为驱动工业制造、智慧城市、基础设施管理等行业数字化转型的核心引擎。其通过数据集成、模型构建与仿真分析&#xff0c;为预测性维护、流程优化和智能决策提供了前所未有的可能性…

作者头像 李华
网站建设 2026/8/6 5:31:10

再也不靠人肉找合同“坑“:我的智能合同风险审查全流程落地实录

作者&#xff1a;飞桨启航计划学员刘京宗 | 还在为了一份几十页的合同&#xff0c;熬夜逐条对照、担心漏掉关键条款吗&#xff1f; 在大模型时代&#xff0c;这件事不该再靠人力硬扛。 PactGuard-ERNIE-PP 是我在实践中打造的一套「智能合同审查与风险分析系统」。它并不是一…

作者头像 李华
网站建设 2026/8/5 19:40:42

GitCode项目创建分支并提交代码

网上的合作项目&#xff0c;创建自己的分支。确认本地仓库状态&#xff08;先看当前分支、修改内容&#xff09;&#xff1a;# 查看关联 git remote -v # 查看当前分支 git branch # 查看本地修改&#xff08;确认要备份的内容&#xff09; git status # 提交本地所有修改&…

作者头像 李华
网站建设 2026/8/6 23:13:15

GitCode克隆输入账号密码后报错

使用各种ide工具克隆GitCode代码的时候&#xff0c;例如这里使用Trae&#xff0c;会提示需要输入账号密码&#xff0c;但正确输入后&#xff0c;会提示错误。这个报错核心是 GitCode 已经停用了 “账号密码” 的 HTTP 认证方式&#xff0c;要求改用个人访问令牌&#xff08;Per…

作者头像 李华