当前位置: 首页 > news >正文

说说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根据访问热度淘汰
http://www.cnnetsun.cn/news/138158.html

相关文章:

  • OpenAI 的反击!GPT-5.2 强行拉开代差,Gemini 3 和 Claude 4 还有机会吗?
  • 零售打工人加薪难?靠这张证,我在激烈竞争里站稳了脚跟
  • 基于springboot的多媒体素材库的开发与应用毕业论文+PPT(附源代码+演示视频)
  • 从离线语音到多模态智能体四博智联 AI 硬件整体解决方案全景解析
  • 我发现跨医院联合训练让诊断准确率飙升后来才知道是横向联邦学习在数据孤岛中的绝招
  • 性能压测工具:wrk
  • 论文引用标注工具排名2025:6大平台+自动规范推荐
  • Kotaemon AWS EC2部署实例:国际业务首选
  • 实在没货,简历(软件测试)咋写?
  • 网约车服务端线上流量巡检与测试验收技术
  • 公考日记7
  • 火电一次调频、自抗扰调频及群智能算法智能调频在MATLAB/Simulink中的应用
  • 科研实验室温湿度监控新范式:以太网 POE 技术全场景解决方案
  • RV1126 NO.57:ROCKX+RV1126人脸识别推流项目之读取人脸图片并把特征值保存到sqlite3数据库
  • 探索SAR ADC:45nm工艺下的高速高精度设计
  • 【小增长技术团队东哥分享】Electron vs Electron-Vite vs Electron-Egg:桌面端开发到底该选谁?
  • 测试价值的量化评估:从成本中心到价值证明的路径探索
  • 测试领导力:在敏捷洪流中筑造质量堤坝
  • C++常用设计模式
  • Spring Boot 自动配置深度解析:原理、实战与源码追踪
  • 无代码解决方案:破解企业数字化转型效率困局
  • SAM (Segment Anything Model):万物皆可分割-k学长深度学习专栏
  • Mysql 报错 “Public Key Retrieval is not allowed”
  • 熊市中最适用的公式==底部建仓
  • 100G双光口网卡技术解析:Intel E810-CAM2方案的性能与应用突破
  • BioSIM抗人组蛋白H1抗体SIM0385:广泛应用于表观遗传学、染色质结构分析等领域
  • 智慧灯杆数字孪生系统:“多杆合一“技术实现
  • SCI一稿多投会不会被发现?
  • RUI Builder-图形化UI设计-工程范例
  • win10 - 删除非法命名的文件夹的方法