
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存雪崩是大多数软件开发程序员在开发软件的时候会遇到的一些常见问题,而本文我们就通过案例分析来简单了解一下,缓存雪崩异常原因与解决方法分享。
1、现象
缓存雪崩是指大量请求在缓存中没有查到数据,直接访问数据库,导致数据库压力增大,终导致数据库崩溃,从而波及整个系统不可用,好像雪崩一样。
2、异常原因
缓存服务不可用。
缓存服务可用,但是大量KEY同时失效。
3、解决方案
1.缓存服务不可用
redis的部署方式主要有单机、主从、哨兵和cluster模式。
单机
只有一台机器,所有数据都存在这台机器上,当机器出现异常时,redis将失效,可能会导致redis缓存雪崩。
主从
主从其实就是一台机器做主,一个或多个机器做从,从节点从主节点复制数据,可以实现读写分离,主节点做写,从节点做读。
优点:当某个从节点异常时,不影响使用。
缺点:当主节点异常时,服务将不可用。
哨兵
哨兵模式也是一种主从,只不过增加了哨兵的功能,用于监控主节点的状态,当主节点宕机之后会进行投票在从节点中重新选出主节点。
优点:高可用,当主节点异常时,自动在从节点当中选择一个主节点。
缺点:只有一个主节点,当数据比较多时,主节点压力会很大。
cluster模式
集群采用了多主多从,按照一定的规则进行分片,将数据分别存储,一定程度上解决了哨兵模式下单机存储有限的问题。
优点:高可用,配置了多主多从,可以使数据分区,去中心化,减小了单台机子的负担.
缺点:机器资源使用比较多,配置复杂。
小结
从高可用得角度考虑,使用哨兵模式和cluster模式可以防止因为redis不可用导致的缓存雪崩问题。
2.大量KEY同时失效
可以通过设置永不失效、设置不同失效时间、使用二级缓存和定时更新缓存失效时间
设置永不失效
如果所有的key都设置不失效,不就不会出现因为KEY失效导致的缓存雪崩问题了。redis设置key永远有效的命令如下:
PERSISTkey
缺点:会导致redis的空间资源需求变大。
设置随机失效时间
如果key的失效时间不相同,就不会在同一时刻失效,这样就不会出现大量访问数据库的情况。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。