您的位置:首页 >编程>Java>详情

秒杀场景,Redis过期如何防御并发请求穿透至数据库

来源:网络 分类:Java 时间:2019-04-03 浏览量:

本文地址:http://www.xiaoqiaomen.com/article/detail/3065.html

导语: 1.控制失效时间,避免同时失效。比如写入时,过期时间在一个范围内随机    ---当然了,这样避免不了redisdown机所造成的同时失效(避免down机又是怎么高可用的问题了)    或者对redis缓存做集群部署,对于热点数据,在每个服务器设置不同的过期时间2.常规的缓存更新,可以加锁。简单来说,就是当读取缓存失败

1. 控制失效时间,避免同时失效。比如写入时,过期时间在一个范围内随机

    ---当然了,这样避免不了redis down机所造成的同时失效(避免down机又是怎么高可用的问题了)

    或者对redis缓存做集群部署,对于热点数据,在每个服务器设置不同的过期时间

2. 常规的缓存更新,可以加锁。

简单来说,就是当读取缓存失败需要去db读取时,通过加锁保证只有一个请求去db进行读取和更新,其它的请求可以直接返回或等待。

--这种加锁,解决的是某个key失效后,大量请求都同时读取该key的情况(比如全局的计数之类)。如果是上面提到的donw机的场景,那已经是一场”雪崩“了,就要根椐实际场景来操作了。。。

所以,如果是预案,既然是缓存,就要想尽办法,避免整体失效(因为一旦整体失效,而db又无法承受大量请求的话,则只能是降级服务了)


免责声明:本文章注明的文章来源于网络、自媒体综合提供的内容均源自网络、自媒体,版权归原作者所有,转载请联系原作者并获许可,文章观点仅代表作者本人,不代表本网站立场,如对本文内容有异议,请联系网站底部客服邮箱申请撤稿,我们会核实后处理。

扫码关注微信