redis缓存雪崩、击穿、穿透
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、redis缓存雪崩
- 二、redis缓存击穿
- 三、redis缓存穿透
前言
主要是介绍一下redis缓存雪崩、击穿、穿透,以及他们的解决方式。
一、redis缓存雪崩
所谓的redis缓存雪崩指的是:redis中大量key集中过期或者redis服务器宕机,从而导致大量请求从数据库获取数据,导致数据库服务器访问压力过大。
解决方式:
① 若是由于大量key过期所造成的,可以给key的ttl设置一个过期时间
② 若是因为redis服务器宕机所导致的,可以搭建redis集群,保证高可用
③ 可以从请求量层面进行解决,对缓存业务添加限流和服务降级策略
④ 可以添加多级缓存,比如说nginx缓存
二、redis缓存击穿
所谓的redis缓存击穿指的是:热点key的过期,从而导致大量访问热点key的请求访问数据库,从而导致数据库压力过大。
解决方式:热点key通常是我们通过后台进行批量添加的,比如秒杀活动,解决热点key失效,可以重建缓存
① 互斥锁实现:只允许一个线程对redis缓存进行重建,其他线程处于等待状态,可以通过redis当中的setnx实现。缺点是串行化执行,效率低。优点是一致性高。
② 逻辑过期:给需要缓存的数据添加一个逻辑过期字段,通过对逻辑过期字段的判断,判断数据有无过期,如果过期则开启一个线程进行缓存重建,并且返回之前的数据。缺点是数据的一致性低,优点是相应速度快。
三、redis缓存穿透
所谓的redis缓存穿透指的是:redis当中没有数据,数据库当中也没有数据,请求每次都是访问数据库,而数据库有没有数据返回。
解决方式:
① 缓存空值。缺点是有点浪费内存空间,如果这样的请求过多,会导致redis当中有大量这种无用缓存,可以给其设置一个ttl。
② 使用布隆过滤器。布隆过滤器原理是一个二进制的数组,存储的是0或1,在添加元素时进行多次hash运算,得到多个0或1,存储到相应位置。
③ 热点参数的限流降级
④ 进行权限校验
⑤ 做好数据格式的校验
redis缓存雪崩、击穿、穿透相关推荐
- redis缓存雪崩、穿透、击穿概念、布隆过滤器小结及解决办法
判存业务 redis缓存雪崩.穿透.击穿概念及解决办法 什么是 概念: 1.缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意 ...
- 顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了
如果你是一位后端工程师,面试时八成会被问到 Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力.可以说,熟练使用 Redis ...
- 解决Redis缓存雪崩、穿透、并发、预热、击穿、热点Key等问题
一.缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程: 1.redis集群大面积故障 2.缓 ...
- Redis缓存雪崩、穿透、击穿,布隆过滤器,分布式锁详解
缓存雪崩 在某一个时间存在大量的缓存key失效 解决办法 1.有效期一直---->给每一个数据加上水机有效期 2.redis挂掉了----->使用redis集群,分摊key的存储 引出re ...
- 缓存雪崩 击穿 穿透
缓存穿透 **缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意 ...
- redis的雪崩 击穿 穿透以及解决方案
雪崩:众多缓存数据同一时间到期导致大量请求同时达到数据库,致使数据库超负荷. 解决方案: 1.数据对时间不敏感:到期时间加一个随机值 2.数据必须在某一时刻到期:客户端请求的时候加个延迟. 击穿:某一 ...
- Redis缓存雪崩缓存击穿缓存穿透
Redis缓存雪崩&缓存击穿&缓存穿透 一 缓存更新策略 二 缓存雪崩 三 缓存击穿 四 缓存穿透 一 缓存更新策略 目前redis缓存更新存在3种主流策略,分别是:内存淘汰.超时剔除 ...
- redis缓存雪崩、缓存击穿和缓存穿透还傻傻分不清?看这篇就够了
前言 关于Redis的高频问题,缓存雪崩.缓存击穿和缓存穿透一定少不了,相信大家在面试中都被问到过类似的问题.为什么这些问题一直热门呢?因为我们在使用Redis缓存时,这些问题都是很容易遇到的.接下来 ...
- Redis 缓存雪崩、击穿、穿透
Redis 缓存雪崩.击穿.穿透 文章目录 Redis 缓存雪崩.击穿.穿透 一.Redis基础 Redis基本数据类型.操作 二.面试相关问题 1.小伙子您好,看你简历上写了你项目里面用到了Redi ...
- 面试填坑之Redis无底洞(一、Redis缓存雪崩、击穿、穿透)
Redis缓存雪崩.击穿.穿透 学习自大佬:https://blog.csdn.net/qq_35190492/article/details/102889333 https://www.cnblog ...
最新文章
- 紫书 习题 10-17 UVa 11105 (筛法)
- Strategy Analytics:物联网安全令人担忧,成本节约效益也不确定
- java培训机构如何选择适合自己的
- apache代理模块proxy使用
- 如果三国中有5G网,刘关张该这样拜把子!
- 欢迎使用人体运动检测与跟踪CSDN-markdown编辑器
- python编程从入门到实践答案-《Python编程:从入门到实践》第五章 if语句 习题答案...
- 微软官方Windows Server 2008实战攻略系列
- redis的事务总结
- 企业级rancher搭建Kubernetes(采用rancher管理平台搭建k8s)
- 用Java开发自己的Kubernetes控制器,想试试吗?
- redis 系列19 客户端
- yum文件,来自网络
- 清华姚班和100个“张小龙” | 中国AI天才养成计划
- Java中this的用法总结
- Android WAP NET 区别
- 一夜之间,几十万人失去房票!
- 【LSTM新闻数据集分类代码】
- PIV粒子图像运动场
- 关于傅里叶的总结(一)