Skip to content

Latest commit

 

History

History
48 lines (26 loc) · 1.36 KB

cache.md

File metadata and controls

48 lines (26 loc) · 1.36 KB

Cache

常见问题

  • 数据一致性

缓存和数据库一致性

缓存穿透

查询一个必然不存在的数据,导致每次都直接访问数据库,大并发下引起数据崩溃,最终导致服务器崩溃

解决方案:

  1. 将空值也写入缓存,过期时间稍微短一些
  2. 布隆过滤器,过滤不存在key
缓存击穿

缓存不存在但是客户端存在(还未缓存或缓存到期),高并发的情况下读取数据库,导致数据库压力较大

解决方案:

  1. 热点数据永不过期
  2. 对key使用分布式锁
缓存雪崩

由于某些原因(缓存服务宕机、大部分缓存过期),导致大量请求直接访问数据库,大并发下引起数据库崩溃,最终导致系统崩溃

解决方法:

  1. 缓存数据
  • 热点数据永不过期
  • 过期时间随机设置
  1. 缓存服务器

事发前:缓存服务高可用(主从+哨兵、集群),避免缓存服务宕机

事发中:本地缓存+限流,避免数据库宕机

事发后:缓存持久化,重启快速恢复数据

Redis作为缓存的常见问题 https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247484796&idx=1&sn=5c0aa20dd3a9672266a5b35e1416ad72&chksm=fbb28c82ccc50594a053c203379421f051623eb045bfbd1f689aa1b0b8bb1264c6ee2d95d596&scene=21#wechat_redirect