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

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

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

相关推荐
秋92 分钟前
idea中使用AI编程助手通义灵码详解
java·intellij-idea·ai编程
渣渣苏3 分钟前
Java后端接入大模型API的坑
java·开发语言
胖咕噜的稞达鸭4 分钟前
库的原理和制作 动态库如何和可执行程序相关联,为什么程序入口点不是main函数,GOT表,PIC地址无关代码(2)
linux·c语言·开发语言·网络
番石榴AI4 分钟前
JiaJiaOCR:面向Java ocr的开源库
java·图像处理·人工智能·计算机视觉·开源·ocr
予枫的编程笔记5 分钟前
深度剖析 HashMap:从 JDK 1.7 死循环到 1.8 高低位映射优化
java·开发语言·散列表·hashmap
海南java第二人6 分钟前
Java并发编程深度解析:Condition条件变量的核心原理与实战应用
java
窗边鸟7 分钟前
小白日记之二维数组(java学习)
java·开发语言·学习
报错小能手7 分钟前
线程池学习(五) 单线程池(SingleThreadPool)
开发语言
缺点内向8 分钟前
报表自动化进阶:Java精确操控Excel打印页边距的实战方法
java·开发语言·后端·自动化·excel
山沐与山8 分钟前
【Redis】双重判定锁详解:缓存击穿的终极解决方案
java·redis·缓存