缓存穿透、缓存击穿、缓存雪崩区别和解决方案

一、缓存处理流程

前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。

二、缓存穿透

描述:

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。

解决方案:

接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;

从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击

三、缓存击穿

描述:

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力

解决方案:

设置热点数据永远不过期。

加互斥锁,互斥锁参考代码如下:

说明:

1)缓存中有数据,直接走上述代码13行后就返回结果了

2)缓存中没有数据,第1个进入的线程,获取锁并从数据库去取数据,没释放锁之前,其他并行进入的线程会等待100ms,再重新去缓存取数据。这样就防止都去数据库重复取数据,重复往缓存中更新数据情况出现。

3)当然这是简化处理,理论上如果能根据key值加锁就更好了,就是线程A从数据库取key1的数据并不妨碍线程B取key2的数据,上面代码明显做不到这点。

四、缓存雪崩

描述:

缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是,        缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

解决方案:

缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。

如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。

设置热点数据永远不过期。

————————————————

版权声明:本文为CSDN博主「每天进步一点点yes」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/kongtiao5/article/details/82771694

(0)

相关推荐

  • 缓存穿透、击穿、雪崩什么的傻傻分不清楚?看了这篇文后,我明白了

    对于缓存,大家肯定都不陌生,不管是前端还是服务端开发,缓存几乎都是必不可少的优化方式之一.在实际生产环境中,缓存的使用规范也是一直备受重视的,如果使用的不好,很容易就遇到缓存击穿.雪崩等严重异常情景, ...

  • 缓存穿透、缓存击穿和缓存雪崩

    在Redis缓存中有三个必须要知道概念:缓存穿透.缓存击穿和缓存雪崩. 缓存穿透 那什么是缓存穿透,它就是指当用户在查询一条数据的时候,而此时数据库和缓存却没有关于这条数据的任何记录,而这条数据在缓存 ...

  • 高并发存储优化篇:诸多策略,缓存为王

    本文内容概述 缓存是什么 1.1. 存储宕机的致命代价 1.2. 数据库性能为什么会下降 1.3. 缓存的类型 一线研发最头疼的缓存问题 2.1. 缓存穿透 2.2. 缓存击穿 2.3. 缓存雪崩 2 ...

  • 编程语言卧槽!缓存的问题太多了(雪崩、击穿、穿透…)一个个解决!

    作者:温安适 来源:https://my.oschina.net/floor/blog/4964676 引言 一个超级疲惫的下午,离下班还有30分钟,小航拿了一袋坚果,对我说:"温哥,来来来 ...

  • 什么是缓存击穿、雪崩、穿透?

    随着互联网的越来越普及,用户越来越多,系统性能瓶颈成了越来越热门的话题.要解决性能问题的技术手段有很多,比如:缓存.CDN加速.页面静态化.集群.分布式.异步等. 缓存通常被作为首先技术方案,简单而且 ...

  • 缓存穿透、缓存并发、热点缓存之最佳招式

    2017-12-27 程超 程序猿DD 程序猿DD 一.前言 我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题: 缓存穿透 缓存并发 缓存失效 缓存穿透 注: ...

  • 优酷爱奇艺腾讯的视频缓存和下载有怎么样的区别?

    电影缓存成功后手机上却没有,和下载有区别吗? 目前主流的爱奇艺.腾讯优酷以及西瓜视频等平台都支持缓存,而缓存是为了更好地在这个平台在没有网络或者没有流量情况下观看,或者说可以更好的提前加载出内容,从而 ...

  • 没人告诉过你更复杂的缓存穿透怎么解决

    重磅干货,第一时间送达 来源:艾小仙 你应该从网上看过太多的文章说缓存穿透怎么解决?无非就是布隆过滤器,缓存空值什么的. 但是,更深入的一个问题,缓存空值有没有问题?如果缓存的空值太多怎么办? 如果用 ...

  • 绳锯伤人迷案:到底啥机器?碎片穿透钢板击穿人体!威力那么大?

    昨天看到一个有点吓人的新闻,浙江海宁丁桥某工地上的建筑工人,在使用混凝土切割机时候,铁轮炸裂,一颗子弹差不多大小的铁轮碎片飞出,穿透肾脏,深入腹内,生命垂危! 一个切割机的碎片,威力怎么会那么大? 伤 ...

  • 再也不怕,缓存雪崩、击穿、穿透!

    用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了. 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访 ...