Java面试题:Redis数据淘汰策略

Redis数据淘汰策略

为了避免缓存过多导致内存被占满进行的数据删除策略

Redis提供了8种不同策略来选择要删除的key

noeviction:

不淘汰任何key,但内存满时不允许写入新数据(默认)

volatile-ttl:

对设置了过期数据的key,剩余过期时间越短的key越先被淘汰

allkeys-random:

对全体key,随机进行淘汰

volatile-random:

对设置了TTL的key,随机进行淘汰

allkeys-lru:

对全体key,基于LRU算法进行淘汰

volatile_lru:

对于设置了TTL的key,基于LRU算法进行淘汰

allkeys-lfu:

对全体key,基于LFU算法进行淘汰

volatile-lfu:

对于设置TTL的key,基于LFU算法进行淘汰

LRU:least recently used最近最少使用

用当前时间减去最后一次的访问时间,值越大越先被淘汰

LFU:least frequently used最少频率使用

key的访问频率越低越先被淘汰

使用建议

业务存在明显冷热区分

优先使用LRU策略,利用lru算法的优势,将最近最常访问的数据保留

业务数据访问频率差别不大

使用allkeys-random,随机进行淘汰

业务有置顶需求

使用volatile-lru策略,通过置顶数据不设置过期时间的方式不删除置顶数据

业务中存在短时高频访问的数据

可以使用allkeys-lfu或volatile-lfu策略

面试问题

如何保证Redis中的数据都是热点数据?

通过使用allkeys-lru策略留下经常访问的热点数据

redis内存用完了会发生什么?

主要看数据的淘汰策略是什么

如果是默认配置会直接报错

相关推荐
猿究院_夏燊4 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog4 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河5 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年5 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88885 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym5 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
香吧香5 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
DongQiShanRen6 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室6 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python