Redis的缓存击穿、缓存穿透、缓存雪崩原因及解决方案+集群策略

1.缓存雪崩

原因:
Redis中大量的Key同时过期,导致大量的请求访问到数据库,甚至造成数据库宕机;

解决方案

  • 搭建Redis集群来解决这个问题;
  • 在Key上加一个随机的过期时间,防止批量Key过期;

2.缓存击穿

原因:
Redis中某一个热点Key突然失效,导致大量的请求访问数据库;
这样就导致了高并发情况下请求直接穿透Redis缓存,到达数据库,给数据库造成非常大的压力;

解决方案

  • 考虑这个热点的Key是否需要设置不过期,或者根据相关需求设置合理的过期时间;

3.缓存穿透

原因:
某一时刻大量不存在的Key访问到Redis服务,可以理解为一个黑客伪造大批量脏数据访问到缓存当中,因为缓存中没有这些Key,所以造成批量穿透访问到数据库;

解决方案

  • 使用布隆过滤器,只要是它认为是不存在的Key,那么这个Key就不存在,所以可以设置在缓存之前加一层布隆过滤器,拦截不存在的Key;
  • 布隆过滤器代码参考:java做布隆过滤器|简易

Redis集群策略

Redis提供了三种集群策略:1>主从模式;2>哨兵模式;3>cluster模式;

  1. 主从模式:将一台Redis服务器的数据复制到其他Redis服务器的一个过程,前者称为主节点(master),后者称为从节点(salve);
    缺点:如果客户端连接某一个主节点或者从节点突然宕机,需要人工手动修改ip连接别的服务器,并且内存有限,无法支持大的数据;

  2. 哨兵模式:基于主从模式,监听主节点是否在服(是否宕机),如果主节点宕机了之后,会选择一个从节点作为主节点;哨兵模式也可以做集群,如果宕机之后其他哨兵还可以继续工作;

  3. cluster模式:支持多主多从,将Key进行运算之后按照Key进行槽位分配,使不同的Key分配到不同的主节点上,如果某个主节点出现宕机的情况就会它的从节点中选举一个从节点作为主节点;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值