-
缓存预热
- 缓存预热是什么
- 缓存预热就是系统上线后,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!
- 解决方案
- 使用 @PostConstruct 、定时任务、手动处理 提前将数据设置到缓存中
- 缓存预热是什么
-
缓存雪崩
-
缓存雪崩是什么
- 缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力
-
发生场景
- redis 主机挂了, Redis全盘崩溃,偏硬件运维
- redis 中有大量key 同时过期大面积失效,偏软件开发
-
解决+预防方案
- redis 中 key 设置为永不过期 or 过期时间错开
- redis 缓存集群实现高可用
- 主从 + 哨兵
- Redis 集群
- 开启Redis 持久化机制 aof / rdb,尽快恢复缓存集群
- 多缓存结合预防雪崩
- ehcache 本地缓存 + redis缓存
- 服务降级
- Hystrix 或者 sentinel 限流 & 降级
-
-
缓存穿透
- 缓存穿透是什么
- 缓存穿透 就是请求去查询一条数据,先查redis,redis里面没有,再查mysql,mysql里面无,都查询不到该条记录,但是请求每次都会打到数据库上面去,导致后台数据库压力暴增
- 解决方案
- 空对象缓存或者缺省值, 如果发生缓存穿透,可以针对要查询的数据,在Redis里存一个和业务部门商量后确定的缺省值 比如 零、负数、defaultNull等
- 使用布隆过滤器,将key放到布隆过滤器中,请求来了用布隆过滤器判断key是否存在,如果存在则走后续逻辑,不存在则直接返回

- 缓存穿透是什么
-
缓存击穿
- 缓存击穿是什么
- 缓存击穿就是大量请求同时查询一个key时,此时这个key正好失效了,就会导致大量的请求都打到数据库上面去,也就是热点key突然都失效了,MySQL承受高并发量
- 解决方案
- 差异失效时间,对于访问频繁的热点key,干脆就不设置过期时间
- 互斥更新,采用双检加锁
- 缓存击穿是什么
-
总结
Redis 缓存预热、雪崩、穿透、击穿
拜了佛冷2024-08-13 9:56
相关推荐
程序员小八7775 分钟前
MySQL 事务:一文把 ACID、隔离级别、MVCC、锁全串起来lzhdim21 分钟前
提高 SQL 语句执行速度的方法ltl1 小时前
ClickHouse Distributed 引擎与分布式查询路由Wang's Blog1 小时前
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践whcyhhh2 小时前
头歌实践教学平台:大数据存储2023(六)Elastic 中国社区官方博客3 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本Faith_xzc3 小时前
一条 SQL 顶一条 Flink 链路?Doris Streaming Job 持续导入全景解析这个DBA有点耶6 小时前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进晓晓_za8986686 小时前
Geo 优化服务 CI/CD 流水线搭建:源码自动构建、测试与灰度发布程序员夏洛6 小时前
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?