- 数据一致性
查询一个必然不存在的数据,导致每次都直接访问数据库,大并发下引起数据崩溃,最终导致服务器崩溃
解决方案:
- 将空值也写入缓存,过期时间稍微短一些
- 布隆过滤器,过滤不存在key
缓存不存在但是客户端存在(还未缓存或缓存到期),高并发的情况下读取数据库,导致数据库压力较大
解决方案:
- 热点数据永不过期
- 对key使用分布式锁
由于某些原因(缓存服务宕机、大部分缓存过期),导致大量请求直接访问数据库,大并发下引起数据库崩溃,最终导致系统崩溃
解决方法:
- 缓存数据
- 热点数据永不过期
- 过期时间随机设置
- 缓存服务器
事发前:缓存服务高可用(主从+哨兵、集群),避免缓存服务宕机
事发中:本地缓存+限流,避免数据库宕机
事发后:缓存持久化,重启快速恢复数据