【redis】redis的雪崩和穿透
1.什么是缓存穿透
一般的缓存系统,都是按照key值去缓存查询,如果不存在对应的value,就应该去DB中查找 。这个时候,如果请求的并发量很大,就会对后端的DB系统造成很大的压力。这就叫做缓存穿透。关键词:缓存value为空;并发量很大去访问DB。
造成的原因
1.业务自身代码或数据出现问题;2.一些恶意攻击、爬虫造成大量空的命中,此时会对数据库造成很大压力。
解决方法
1.设置布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,
从避免了对底层存储系统的查询压力。
2. 如果一个查询返回的数据为空,不管是数据不存在还是系统故障,我们仍然把这个结果进行缓存,但是它的过期时间会很短
最长不超过5分钟。
二、雪崩
1.什么是雪崩
因为缓存层承载了大量的请求,有效的保护了存储 层,但是如果缓存由于某些原因,整体不能够提供服务,于是所有的请求,就会到达存储层,存储层的调用量就会暴增,造成存储层也会挂掉的情况。缓存雪崩的英文解释是奔逃的野牛,指的是缓存层当掉之后,并发流量会像奔腾的野牛一样,大量后端存储。
存在这种问题的一个场景是:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,大量数据会去直接访问DB,此时给DB很大的压力。
2.解决方法
(1)设置redis集群和DB集群的高可用,如果redis出现宕机情况,可以立即由别的机器顶替上来。这样可以防止一部分的风险。
(2)使用互斥锁
在缓存失效后,通过加锁或者队列来控制读和写数据库的线程数量。比如:对某个key只允许一个线程查询数据和写缓存,其他线程等待。单机的话,可以使用synchronized或者lock来解决,如果是分布式环境,可以是用redis的setnx命令来解决。
(3)不同的key,可以设置不同的过期时间,让缓存失效的时间点不一致,尽量达到平均分布。
(4)永远不过期
redis中设置永久不过期,这样就保证了,不会出现热点问题,也就是物理上不过期。
(5)资源保护
使用netflix的hystrix,可以做各种资源的线程池隔离,从而保护主线程池。
3.使用
四种方案,没有最佳只有最合适, 根据自己项目情况使用不同的解决策略。
【redis】redis的雪崩和穿透相关推荐
- Redis击穿、雪崩、穿透场景描述与解决方案
1.击穿 (1)场景描述 缓存中的某个key由于过期了,并且前端数据出现高并发(一定要有高并发)请求该key(实际上概率很低),导致瞬间都打在数据库上. (2)解决方案 使用redis的setnx(表 ...
- Redis缓存的雪崩、穿透、击穿
前言: 使用缓存的主要目的是为了提高系统的响应速度.减轻数据库的压力.那么一个正常的缓存流程是怎样的呢,看下如下步骤: 1.用户发起查询请求 2.请求来到redis缓存,在缓存中查询到了数据,将缓存中 ...
- redis击穿、雪崩、穿透解决方案
Redis击穿 redis缓存击穿是指某一个非常热点的key(即在客户端搜索的比较多的关键字)突然失效了,这时从客户端发送的大量的请求在redis里找不到这个key,就会去数据里找,最终导致数据库压力 ...
- 面试精讲之面试考点及大厂真题 - 分布式专栏 10 Redis雪崩,穿透,击穿三连问
10 Redis雪崩,穿透,击穿三连问 能够生存下来的物种,并不是那些最强壮的,也不是那些最聪明的,而是那些对变化作出快速反应的. --达尔文 引言 关于Redis雪崩,穿透,击穿的问题,第一次接触名 ...
- Redis面试 - redis 的雪崩和穿透?
Redis面试 - redis 的雪崩和穿透? 面试题 了解什么是 redis 的雪崩和穿透?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实 ...
- 高并发架构系列:如何解决Redis雪崩、穿透、并发等5大难题
别人用手机刷新闻.刷段子,你用手机刷知识.你会的越多,成功率就越高. 本篇分享大型网站高并发架构设计是如何解决Redis雪崩.穿透.并发等5大难题的,以下,enjoy~ 缓存雪崩 数据未加载到缓存中, ...
- 大厂面试Redis:缓存雪崩、缓存穿透、缓存击穿
欢迎关注这个有趣的灵魂 眼光不错,小伙子,看到这篇文章了就血赚,这篇文章绝对让你学到开心,这是面试的杀器,其实Redis这个东西吧,我个人认为,真的真的很强大,但是呢,又感觉被吹得有点过头了 不过人家 ...
- Redis缓存击穿、雪崩、穿透!(超详细)
缓存的击穿.穿透和雪崩应该是再熟悉不过的词了,也是面试常问的高频试题. 不过,对于这三大缓存的问题,有很多人背过了解决方案,却少有人能把思路给理清的. 而且,网络上仍然充斥着,大量不太靠谱的解决方案, ...
- 顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了
如果你是一位后端工程师,面试时八成会被问到 Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力.可以说,熟练使用 Redis ...
- Redis 缓存击穿,缓存穿透,缓存雪崩原因+解决方案
一.前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是 ...
最新文章
- ECCV2020 最佳论文提名 | 流感知技术
- 系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)
- 小米面试:二叉搜索中第K小的元素
- Leetcode 100. 相同的树 (每日一题 20210811)
- 《C++面向对象高效编程(第2版)》——3.4 赋值操作符
- 创建一个HTML文件
- docker多个容器一起打包_如何链接多个Docker容器并封装结果?
- 计算机应用研究潜规则,基于相容矩阵计算的不完备决策系统规则获取算法
- [scikit-learn 机器学习] 3. K-近邻算法分类和回归
- 刺激味蕾的甜品果汁饮品psd分层海报素材,愉悦使用图层!
- 职场必备:公司高层职位的英文缩写
- C#正则表达式编程(四):正则表达式
- MySQL 浅谈NOT NULL和DEFAULT的关系
- iOS 开发中遇到的问题
- 如何计算两向量的夹角
- MS08067安全培训讲师(高薪、专兼职)
- 长微博android,凑合着用吧:Android版长微博
- 系统设置中 语言设置,中文或者英文
- 使用Opencv+VS2015做数字图像识别
- html时显示当前时间的时钟,javascript实现页面的实时时钟显示示例