news 2026/4/18 8:48:51

说说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/4/16 16:02:17

LSTM - 长短时记忆网络

LSTM&#xff0c;全称长短时记忆网络&#xff0c;是一种特殊的循环神经网络&#xff0c;专门设计用来解决传统RNN在处理长序列时遇到的梯度消失/爆炸问题。它的核心特点与优势是能够学习并记住数百步之前的输入信息、通过精密的门控系统控制信息的流动、有效缓解了训练过程中的…

作者头像 李华
网站建设 2026/4/17 17:59:27

探索同步降压式单片DC - DC电源芯片:初学者的友好之选

同步降压式单片DC-DC电源芯片 1.6V-6.3V宽输入电压 500K开关频率 最大6A输出电流 软启动、过温保护、过流保护、欠压保护 适合初学者入门学习 带版图 不带版图在电源管理领域&#xff0c;同步降压式单片DC - DC电源芯片扮演着极为重要的角色&#xff0c;对于想要入门电源设计的…

作者头像 李华
网站建设 2026/4/17 20:49:47

1d 人工势场法路径规划Matlab代码实战

1d人工势场法路径规划matlab代码 自己手写的人工势场法路径规划matlab代码&#xff0c;通过设定目标点和起始点&#xff0c;人工势场法进行路径规划&#xff0c;机械臂末端按照规划好的路径移动。 通过修改参数可实现最佳配置在机器人路径规划领域&#xff0c;人工势场法是一种…

作者头像 李华
网站建设 2026/4/18 8:39:20

【C语言学习】编译和链接

一、翻译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境&#xff1a; ①翻译环境&#xff1a;源代码被转换成可执行的机器指令&#xff08;二进制指令&#xff09;&#xff1b; ②执行环境&#xff1a;实际执行代码。二、翻译环境 翻译环境由编译和链…

作者头像 李华
网站建设 2026/4/12 0:14:09

利润暴涨的关键!企业搭建AI agent,早做早占先机

一、AI agent搭建让企业告别“低效内耗” 传统企业运营中&#xff0c;大量重复性、流程化的工作消耗了员工的大量精力&#xff0c;导致整体效率低下&#xff0c;这也是许多企业利润难以提升的重要原因。而搭建AI agent能够彻底改变这一现状&#xff0c;通过AI agent自动化处理这…

作者头像 李华
网站建设 2026/4/18 8:09:39

MATLAB数字信号调制解调仿真代码

1. 参数设置 % 参数设置 M 4; % 调制阶数&#xff08;例如&#xff0c;4表示4-ASK、4-PSK、4-FSK&#xff09; fs 1000; % 采样频率&#xff08;Hz&#xff09; fc 100; % 载波频率&#xff08;Hz&#xff09; T 1; % 符号持续时间&#xff08;秒&#xff09; N T * fs; %…

作者头像 李华