Redis的缓存击穿

参考:

43-Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?-51CTO_COM\@annote#^sran-1678435861304
Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?-51CTO.COM

Redis 的缓存击穿是指缓存中没有数据,但是数据库中有数据。一般发生在热点数据过期后,同时又有大量的并发访问该数据,就只能去数据库中查询,大量的请求打到数据库上导致数据库崩溃

解决方案

  1. 过期时间设置随机过期时间,过期时间=base 时间 + 随机过期时间。在基础过期时间上加上随机过去时间,就是在未来一段时间缓慢过期,然后避免大量数据同时过期,造成数据库压力过大。
  2. 设置一个缓存预热,然后就是提前把热点数据存入 Redis,然后避免瞬时数据库压力过大。
  3. 在发现缓存数据不存在,不直接去读取数据库,而是先获取一个锁,如果没有拿到锁就等待其他线程将数据刷入 Redis