缓存要考虑的问题
-
数据不一致
- 要求时效性高的数据,需要保证与数据库中的一致,也要保证与副本中的数据一致
- 避免方式
- 设置合理的过期和更新策略
-
缓存雪崩
- 大量key缓存在同一时间过期
- 避免方式
- 不给热点key设置过期时间
- 或者原失效时间上加上一个随机值
-
缓存击穿
- 一个热点key缓存突然过期,导致大量并发请求落到数据库上
- 避免方式
- 不给热点key设置过期时间
-
缓存穿透
- 大量请求在缓存中找不到值,导致大量并发请求落到数据库上
- 避免方式
- 给请求做一次拦截校验,去除非法值
- 使用布隆过滤器,发现不存在的key首先就拒绝
-
缓存故障
- 缓存所在的机器发生宕机
- 避免方式
- 部署分布式的集群,即使一台机器宕机,也只是丢失部分数据,还能重新加载