Redis缓存雪崩、缓存穿透与缓存击穿

缓存雪崩

  指同一时间大量的缓存失效,导致这些大量请求都直接访问数据库。如果数据库压力过大,可能导致数据宕机。

  解决办法:

  1.对批量存入的redis的数据设置随机失效时间。如:电商首页的大量数据都是从缓存中取的。

 缓存穿透

  指缓存和数据库中都没有的数据,导致用户不断的查询数据库和缓存。如果数据库压力过大,可能导致数据库宕机。

  解决办法:

  1.对key进行条件过滤或使用布隆过滤器。

  2.在网关层限制某一时间区间内相同IP的调用次数,防止恶意用户不断的更换参数请求服务器。

  3.从缓存中没有取到的数据,在数据库中也没有取到,可以将对应key的value设置为null存在redis中,防止攻击用户用同一个id暴力攻击。

 缓存击穿

  指某一时间某个热点数据失效,导致这个时间点大量并发请求直接请求数据库。如果数据库压力过大,可能导致数据库宕机。

  解决办法:

  1.对热点数据库设置永远不过期或获取热点数据的方法上加互斥锁。

posted @ 2020-11-04 14:11  今夕是何年?  阅读(149)  评论(0编辑  收藏  举报