什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?

缓存雪崩:在一个时间段内,有大量的key过期,或者Redis服务宕机,导致大量的请求到达数据库,带来巨大压力

  • 给key设置不同的TTL、利用Redis集群提高服务的高可用性、添加多级缓存、添加降级流策略

缓存击穿:给某一个key设置了过期时间,当key过期的时间,恰好这个时间点有大量的并发请求访问这个key,可能会瞬间把数据库压垮

  • 互斥锁:缓存失败时,只允许一个请求去加载数据并更新缓存,其他请求阻塞等待

  • 逻辑过期时间:不给key设置过期时间,而是添加一个逻辑过期时间字段,查询缓存发现逻辑过期时间已过期时,再获取互斥锁,如果获取成功,则开启一个新线程去查询数据并更新缓存,失败则返回过期数据

缓存穿透;访问一个不存在的数据,在数据库没有读取到也不会直接写入缓存,导致每次请求都到达数据库,带来压力

  • 缓存空数据:查询返回的数据为空,仍然将空数据缓存;实现简单、消耗内存

  • 布隆过滤器:将可能存在的数据哈希到一个足够大的bitmap,可以过滤掉一些不存在的数据,避免了DB的查询

缓存预热:在系统启动或缓存失效后,提前将部分数据加载到Redis缓存中,提高系统的响应速度和性能

相关推荐
灯澜忆梦12 分钟前
【Go Zap 日志库】#1 |快速上手 + 配置详解
开发语言·后端·golang
m0_5873830017 分钟前
无人自助拼豆系统从需求分析到落地部署全流程实战开发指南
java·经验分享·后端·struts·小程序·架构·需求分析
a努力。19 分钟前
四维解析Agent记忆架构:从零实战LangGraph长期记忆
java·开发语言·数据库
碧海银沙音频科技研究院20 分钟前
炬芯ATS308X的扩音器:麦克风到扬声器直通功能实现
java·linux·运维
Rain的Java大神之路27 分钟前
被问麻了!Function Calling、MCP、Skill 到底啥关系?一张图讲透三层架构,附 Java 生产落地全流程+30个坑
java·后端·ai编程
Wang's Blog27 分钟前
Java 项目部署之 Docker工具快速入门: Docker Compose 初识与安装
java·开发语言·docker
niucloud-admin33 分钟前
JAVA V6 多商户商城 开发文档——项目启动
java·开发语言·python
学逆向的37 分钟前
C 控制台指令
c语言·开发语言·网络安全
沫璃染墨38 分钟前
从零入门数据结构与算法(一):复杂度分析——从算法效率到时间与空间复杂度
c语言·开发语言·数据结构·笔记·算法·飞书