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内存用完了会发生什么?

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

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

相关推荐
cj63411815018 分钟前
【MySQL】mysqldump使用方法
java·后端
JIngJaneIL20 分钟前
停车场管理|停车预约管理|基于Springboot的停车场管理系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·停车场管理系统
lly20240621 分钟前
ASP Folder:深入解析其功能与使用技巧
开发语言
杰克尼1 小时前
二分查找为什么总是写错
java·数据结构·算法
雪域迷影1 小时前
Go语言中通过get请求获取api.open-meteo.com网站的天气数据
开发语言·后端·http·golang·get
梦子yumeko2 小时前
第五章Langchain4j之基于内存和redis实现聊天持久化
数据库·redis·缓存
半旧夜夏3 小时前
【分布式缓存】Redis持久化和集群部署攻略
java·运维·redis·分布式·缓存
短视频矩阵源码定制3 小时前
矩阵系统源码推荐:技术架构与功能完备性深度解析
java·人工智能·矩阵·架构
ysdysyn3 小时前
C# 进程管理实战:检查与启动EXE程序的完整指南
开发语言·c#
Eiceblue3 小时前
使用 Java 将 Excel 工作表转换为 CSV 格式
java·intellij-idea·excel·myeclipse