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

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

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

相关推荐
还是鼠鼠6 分钟前
《黑马商城》Elasticsearch基础-详细介绍【简单易懂注释版】
java·spring boot·spring·elasticsearch·搜索引擎·spring cloud·全文检索
牧羊人_myr21 分钟前
Maven核心功能与项目构建详解
java·maven
掘根23 分钟前
【Qt】绘图
开发语言·qt
量子物理学39 分钟前
Eclipse Mosquitto 在小内存下怎么修改配置文件
java·服务器·eclipse
咖啡续命又一天43 分钟前
python 自动化采集 ChromeDriver 安装
开发语言·python·自动化
程序员鱼皮1 小时前
让老弟做个数据同步,结果踩了 7 个大坑!
java·后端·计算机·程序员·编程·职场
阿湯哥1 小时前
Redis数据库隔离业务缓存对查询性能的影响分析
数据库·redis·缓存
麦兜*1 小时前
Redis 7.2 新特性实战:Client-Side Caching(客户端缓存)如何大幅降低延迟?
数据库·spring boot·redis·spring·spring cloud·缓存·tomcat
Iris7611 小时前
MyBatis一对多关系映射方式
java
程序员清风1 小时前
滴滴二面:MySQL执行计划中,Key有值,还是很慢怎么办?
java·后端·面试