缓存穿透、 缓存击穿和缓存雪崩的定义和处理

138 阅读1分钟

缓存穿透、 缓存击穿和缓存雪崩的定义和处理

架构示意图

缓存穿透

  • 定义:请求数据库中不存在的数据,使得每个请求都打在数据库上
  • 处理方案:处理缓存穿透的方式是即使数据库没有对应的数据,仍旧设置一个特殊缓存,避免请求都打在数据库上。

缓存击穿

  • 定义:热点数据的缓存过期后,大量请求打到数据库上,给数据库带来压力。
  • 处理方案
    • 建立缓存的时候上锁: 在生成缓存的时候使用互斥锁,避免多个请求同时请求数据库。
    • 永不过期: 热点数据不直接设置过期时间,在存放数据的时候,带上数据的过期时间,程序判断过期后,异步更新缓存。

缓存雪崩

  • 定义:缓存在某一时刻同时失效,请求全部打到数据库上,数据库瞬时压力过大雪崩。
  • 处理方案
    • 错开过期时间: 在给缓存设置过期时间时,过原本的过期时间加上随机值,让缓存错开过期时间。