Redis-雪崩与击穿

 2024-01-18    0 条评论    787 浏览

redis

缓存雪崩(大量数据雪崩)

现象

  • Redis中的大量数据的key同时失效,导致高并发请求同时请求了数据库。
  • 突然出现高并发请求,且全部请求的新数据,Redis中并没有该数据的缓存。会出现全部请求到数据库中的现象。

解决

几种方法

  • Redis中key失效时间避免相同,使用随机失效时间

  • Redis中的key不设置失效时间,而是定期更新

  • Redis中的key可以设置失效时间,但是失效后的更新key操作加DCL锁机制。

  • 项目启动时,就将数据缓存加载到Redis中。

缓存击穿(打透了)

缓存击穿类似于缓存雪崩中的情况

现象

  • 某个热点资源持续的被大量高并发请求,而这个资源没在Redis中缓存或者缓存过期失效,导致大量高并发都去请求数据库。
  • 某个资源在数据库中本身就没有,自然也无法缓存到Redis中,所有获取该资源的请求无论何时都会请求到数据库中。

解决

  • Redis中的key不设置失效时间,而是通过定时程序主动更新;
  • Redis可以设置key失效时间,但是请求触发的更新加DCL机制;
  • 对于在数据库获取不到的数据,缓存一个标志位数据,避免频繁获取不存在的值的情况;