Redis 缓存穿透/缓存雪崩/缓存击穿问题

1.缓存预热

当 redis 服务器 首次接入时,服务器内是没有数据的-->当客户端发起请求时,所有的请求,都会访问 mysql 随着时间的推移,redis 上的 数据越来越多,mysql 承担的压力就会逐渐减小(客户端先查询 redis 如果没有查到,就再查询一次 mysql 查到了之后,就会把数据也写入到 redis 中);

如何解决?

缓存预热-->就是用来解决上述问题的:将定时生成 和 实时生成 相结合--先在离线的情况下,先把热点数据导入到 redis 中,此时 导入的这些热点数据,就能帮 mysql 承担很大的压力,随着时间的推移,逐渐使用新的热点数据,淘汰掉旧的数据;

2.缓存穿透

查询某个 key ,在 redis 中没有, mysql 中也没有--这个 key 也不会被更新到 redis 中

如何解决?

1.如果发现这个 key 在 redis 和mysql 中都不存在,就仍然写入到 redis 中 ,将 value 设置为一个空值(""),或者非法值;

2.引入 布隆过滤器,每次查询 redis / mysql 之前,先判断一下 key 是否在 布隆过滤器上存在;(布隆过滤器 本质 是 结合了 hash + bitmap 用比较小的空间开销,比较快的速度,实现针对 key 是否存在的判定)

3.缓存雪崩

由于在短时间内,redis 上大规模的 key 失效,导致缓存命中率 下降,并且 mysql 压力迅速上升;

4.缓存击穿

相当于缓存雪崩的特殊情况,针对热点 key 突然过期了,导致大量的请求直接访问到数据库上,甚至引起数据库当即

如何解决?

基于统计的方式发现热点 key 并设置永不过期,

相关推荐
2602_959960925 小时前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
深念Y6 小时前
SSD 寿命洁癖:编译过程不入盘的原则与实践
缓存·io·内存·编译·ssd·读取·写入
智购科技无人售货机厂家6 小时前
2026自动售货机实时库存管理系统:从Redis缓存到持久化的数据架构演进~YH
redis·缓存·架构
晓晓_za8986687 小时前
Geo 优化源码蒸馏词机制:地域词库构建与匹配逻辑详解
运维·tcp/ip·spring·缓存·ci/cd
nvd117 小时前
LiteLLM 如何使用 Redis:从部署位置到精确响应缓存
redis·缓存·gateway
码哥字节8 小时前
我把Redis双活塞进Spring,业务代码零改动
redis·spring boot ai 编程·factorybean
风流 少年11 小时前
Spring AI 2.0:阿里云百炼平台(智能体应用)
redis·spring·阿里云
肠畔码农11 小时前
深度解密 Redis 分布式锁:从单机原子语义到集群架构博弈
redis·分布式·架构
肠畔码农12 小时前
底层视角拆解:Redis Lua脚本原子性、主线程阻塞与主从不一致全解析
java·redis·lua