1. 缓存穿透
1.2 问题简述
缓存击穿就是用户请求数据在数据库对应查询结果为空时,对该结果不进行缓存,从而导致每次查询为空都会直接访问数据库
1.2 解决方法
- 设置空值
将在数据库查询为 null 的 key 也缓存起来,设置一定的过期时间,这样只会在 key 失效的额时候访问数据库,可以减轻数据库压力
- 使用布隆过滤器
2. 缓存雪崩
2.2 问题简述
在同一时间内,大量 key 失效,导致对这些 key 的访问都落在数据库上,造成数据库的庞大压力
2.2 解决方法
随机 设置 key 的过期时间,使得 key 失效时间均匀分布,从而分散数据库压力
3. 缓存击穿
3.2 问题简述
频繁访问的热点数据失效,导致一时间大量的热点数据访问落在数据库上,可能导致数据库崩溃
3.2 解决方法
频繁访问的热点数据可以设置为永久不失效
后续更新java+redis+springboot实现代码
本文深入探讨了缓存系统中常见的三大问题:缓存穿透、缓存雪崩和缓存击穿,分析了这些问题产生的原因及对数据库带来的压力,并提出了有效的解决方案,包括设置空值、使用布隆过滤器、随机设置key的过期时间和将热点数据设为永久有效。
5万+

被折叠的 条评论
为什么被折叠?



