什么是reids缓存雪崩、穿透、击穿

1.Reids缓存雪崩

Redis缓存key同一时间大量失效,导致大量请求全部打到数据库,造成数据库挂掉

解决方案

设置缓存失效时间,随机初始化失效时间

部署集群的时候,把热点数据平均分布到不同redis节点上去

暴力方法,不设置失效时间,永远不失效

利用定时任务刷新缓存时间,在失效之前重新刷新失效时间

2.缓存穿透

数据库的主键是从0开始递增,没有负值。恶意用户利用这一点,不断用id小于0的参数给服务器发请求,redis就查不到这个缓存,redis中没有就会去数据库中找,找不到返回空值。恶意用户一直用id小于0的参数发送,就会一直直接穿透缓存,打在数据库上,导致数据库挂掉,

解决方案:

数据不论得到什么请求,是空值还是有值都缓存到redis中去,但是对方可能换参数,IP拉黑,但是可能换IP

判断参数的合法性,不合法return掉

布隆过滤器

3.缓存击穿

比如某秒杀商品放到reis缓存中,对应了一个key,只设置了很短的缓存失效时间,大量用户访问这个商品的时候都会到redis中访问该key,redis查询该缓存key并返回回去,突然这个缓存时间失效了,就把大量访问该key的数据打到数据库中,一般情况下,都是访问热点key,被击穿,打到数据库上,数据库挂掉

解决方案

缓存时间,不过期

分布式锁,互斥锁:给缓存找不到,请求数据库这一步上锁,那么这时候就只有一个线程能够抢到这个锁,也就是说只有一个线程到数据库找数据,数据库压力就小了,查到数据后,再把数据重新写到缓存中去,没抢到锁的向等待几秒

相关推荐

  1. 什么缓存击穿缓存穿透缓存雪崩

    2024-01-12 20:38:01       16 阅读
  2. Redis缓存击穿缓存雪崩缓存穿透

    2024-01-12 20:38:01       32 阅读
  3. Redis缓存穿透击穿雪崩

    2024-01-12 20:38:01       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-12 20:38:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-12 20:38:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-12 20:38:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-12 20:38:01       18 阅读

热门阅读

  1. html2canvas截图生产海报图片

    2024-01-12 20:38:01       37 阅读
  2. File chooser dialog can only be shown with a user activation.

    2024-01-12 20:38:01       34 阅读
  3. 【基础】字符串连接(UPC)

    2024-01-12 20:38:01       36 阅读
  4. uView Steps 步骤条

    2024-01-12 20:38:01       34 阅读
  5. Linux中关于cat命令详解

    2024-01-12 20:38:01       28 阅读
  6. vue的异步更新 $nextTick

    2024-01-12 20:38:01       32 阅读
  7. 验证Lettuce在单连接上进行多路复用

    2024-01-12 20:38:01       56 阅读
  8. 10000访问量纪念日

    2024-01-12 20:38:01       37 阅读
  9. 【计算机二级考试C语言】C程序结构

    2024-01-12 20:38:01       35 阅读
  10. 算法训练营Day36

    2024-01-12 20:38:01       32 阅读
  11. 【力扣每日一题】力扣2707字符串中的额外字符

    2024-01-12 20:38:01       34 阅读