"

                                        ✅万博manbext|体育首页✅㊣全球最大,最信誉的线上综合平台✅万博manbext|体育首页✅千款游戏,砖石级服务,万博manbext|体育首页,欢迎各界玩家加入体验!

                                                                              "
                                                                              中培教育IT资讯频道
                                                                              您现在的位置:万博manbext|体育首页 > IT资讯 > IT运维 > 具体分析缓存击穿与缓存雪崩

                                                                              具体分析缓存击穿与缓存雪崩

                                                                              2021-04-25 14:37:46 | 来源:中培企业IT培训网

                                                                              业内人士都听说过缓存击穿与缓存雪崩万博manbext|体育首页⊥虿﹎anbext|体育首页万博manbext|体育首页;捍婊鞔┧侵改骋籯ey经常被用户特别关注经常被查询万博manbext|体育首页,而恰好此时间节点对Key有大量的并发请求过来万博manbext|体育首页万博manbext|体育首页,庞大数量的请求打到db万博manbext|体育首页万博manbext|体育首页,这些请求有坑你会直接击穿高速缓存万博manbext|体育首页,数据库的访问压力也会瞬间被击穿⊥虿﹎anbext|体育首页万博manbext|体育首页;捍嫜┍浪侵富捍嬷械拇罅渴莸搅斯谑奔?万博manbext|体育首页,这种巨大的数据导致了数据库压力过大,甚至down机万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页。下面我们就来详细介绍一下缓存击穿和缓存雪崩万博manbext|体育首页万博manbext|体育首页。

                                                                              具体分析缓存击穿与缓存雪崩

                                                                              一般来说万博manbext|体育首页,缓存穿透的场景发生在故意攻击的场景下;比如说,本来查询意见商品的序号是正数万博manbext|体育首页,但是请求方总是请求大量的负数过来万博manbext|体育首页万博manbext|体育首页,导致缓存无效万博manbext|体育首页,全部流量都打在了数据库中,如果某一时刻流量过大万博manbext|体育首页,则会导致数据库崩溃;缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,引起数据库压力过大甚至down机万博manbext|体育首页?;捍婊鞔┦侵溉鹊鉱ey在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来万博manbext|体育首页,从而大量的请求打到db万博manbext|体育首页。

                                                                              一、缓存击穿:如果数据库中有缓存万博manbext|体育首页,CPU中有缓存,那么模拟真实数据的原因就更多了。我们应该避免在不需要缓存的情况下缓存和合理的模拟万博manbext|体育首页。在项目的实际开发和部署过程中,为了减轻db的压力万博manbext|体育首页,必须使用Nosql作为中间介质万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,以减少数据库的I/O操作,从而提高系统访问效率万博manbext|体育首页万博manbext|体育首页。作为最常用的缓存处理工具,Redis在使用过程中必须对缓存穿透万博manbext|体育首页、缓存击穿和缓存雪崩有详细的了解万博manbext|体育首页万博manbext|体育首页。高速缓存破坏是指key经常被查询万博manbext|体育首页万博manbext|体育首页,用户经常关注。正如熟客或key经常不访问一样,用户非常喜欢它万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页。但是在这个时候万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,如果key在高速缓存到期时失效或者是冷门key,那么在这个时候突然出现了大量的访问请求,这就会导致大并发请求直接穿透高速缓存,请求数据库万博manbext|体育首页,瞬间增加访问数据库的压力万博manbext|体育首页。

                                                                              归纳起来:缓存破坏有两个原因。

                                                                              1万博manbext|体育首页、一个冷门key突然被大量用户要求访问。

                                                                              2万博manbext|体育首页万博manbext|体育首页、一款热门key万博manbext|体育首页,缓存时间正好过期万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,此时有大量的用户访问万博manbext|体育首页。

                                                                              我们的业务通惩虿﹎anbext|体育首页;峋7梦始父鍪?万博manbext|体育首页万博manbext|体育首页,比如秒杀活动万博manbext|体育首页万博manbext|体育首页,这些频繁访问的数据被称为热点数据万博manbext|体育首页。如果缓存中的热点数据过期,此时需要大量访问热点数据万博manbext|体育首页万博manbext|体育首页,则无法从缓存中读取万博manbext|体育首页。如果直接访问数据库万博manbext|体育首页,数据库很容易被高并发性要求冲走,这就是缓存损坏的问题万博manbext|体育首页。有关缓存击穿的问题:我们常用的解决办法是加锁万博manbext|体育首页。在key过期时万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,在key想要查询数据库时添加一把锁万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,此时只能让第一个请求查询数据库万博manbext|体育首页,然后将从数据库中查询到的值存储在其他相同的key中万博manbext|体育首页万博manbext|体育首页,这样就可以直接从缓存中获得万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页。

                                                                              二万博manbext|体育首页、缓存雪崩:缓存雪崩是指当数据缓存到期时万博manbext|体育首页,大量的查询数据会导致数据库压力过大万博manbext|体育首页万博manbext|体育首页,甚至down机。不像缓存击穿,缓存击穿是指同一数据的并发查询万博manbext|体育首页,缓存雪崩是不同数据的过期时间万博manbext|体育首页,很多数据无法查询,从而查询数据库。

                                                                              理由:

                                                                              Redis突然停止了。

                                                                              大部分数据无效万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页。

                                                                              举例来说万博manbext|体育首页,我们基本上都经历过购物狂欢万博manbext|体育首页万博manbext|体育首页,假办了23:00-24:00的商品骨折促销活动万博manbext|体育首页。程序小哥哥在23:00将商家骨折的商品放入缓存中,并通过redis的expire设置了一个小时的过期时间。在此期间万博manbext|体育首页,许多用户会访问这些商品信息万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页、购买等。但正好在24:00时,碰巧有许多用户正在访问这些商品万博manbext|体育首页,此时访问这些商品就会落到数据库上万博manbext|体育首页,造成数据库承受着巨大的压力万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,稍有不慎就会直接导致数据库。

                                                                              缓存雪崩有以下解决方案:

                                                                              1、redis高度可用。

                                                                              redis有可能挂掉万博manbext|体育首页万博manbext|体育首页,增加一些redis实例(一主多从或多主多从)万博manbext|体育首页,这样一个挂掉之后其他的就可以继续工作了万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,实际上就是建立了一个集群。

                                                                              2、限制流量降级。

                                                                              缓存失效后,通过锁定或队列控制读取数据库中缓存的线程万博manbext|体育首页万博manbext|体育首页。在某些密钥中万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,只有一个线程可以查询数据和写入缓存万博manbext|体育首页万博manbext|体育首页,其他线程可以等待万博manbext|体育首页。

                                                                              3万博manbext|体育首页万博manbext|体育首页、数据预热。

                                                                              资料加热是指在正式部署之前万博manbext|体育首页万博manbext|体育首页,我会提前访问可能的数据,这样可能会将大量访问的数据加载到缓存中万博manbext|体育首页万博manbext|体育首页。在进行大并发访问之前万博manbext|体育首页,手动触发加载缓存万博manbext|体育首页。

                                                                              4万博manbext|体育首页、不同的过期时间万博manbext|体育首页。

                                                                              设定不同的过期时间万博manbext|体育首页万博manbext|体育首页万博manbext|体育首页,使缓存故障时间尽可能均匀。

                                                                              以上我们分享了缓存击穿和缓存雪崩的详细介绍了。一般来讲我们设计一个缓存系统万博manbext|体育首页,必须考虑的问题就是缓存穿透,缓存击穿以及失效时的雪崩效应万博manbext|体育首页,如果您对相关知识感兴趣万博manbext|体育首页,可以继续关注中培教育。

                                                                              相关阅读

                                                                              万博manbext|体育首页