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

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

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

相关推荐
良木生香13 小时前
【C++初阶】STL——Vector从入门到应用完全指南(1)
开发语言·c++·神经网络·算法·计算机视觉·自然语言处理·数据挖掘
Brilliantwxx13 小时前
【C++】String的模拟实现(代码实现与坑点讲解)
开发语言·c++·笔记·算法
薪火铺子13 小时前
SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
java·后端·spring
ch.ju13 小时前
Java程序设计(第3版)第二章——参数(实参 形参)
java
椰猫子13 小时前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
海兰13 小时前
【开篇】Spring AI、OpenClaw 和Hermes
java·人工智能·spring·spring ai
skilllite作者13 小时前
Zed 1.0 编辑器深度评测与实战指南
开发语言·人工智能·windows·python·编辑器·agi
bzmK1DTbd13 小时前
微服务架构设计:Spring Cloud Gateway与Nacos集成
java·spring·微服务
上弦月-编程13 小时前
指针编程:高效内存管理核心
java·数据结构·算法
罗超驿13 小时前
双指针算法经典案例:LeetCode 283. 移动零(Java详解)
java·算法·leetcode