网站首页 > 技术教程 正文
快速了解
1、什么是缓存雪崩现象,是怎么导致的,如何解决
2、什么是缓存穿透现象,是怎么导致的,如何解决
3、什么是缓存击穿现象,是怎么导致的,如何解决
4、缓存穿透和缓存击穿的区别
背景:
只要是在系统中引入了中间件缓存模块,就均有可能出现缓存面临的这些问题:缓存雪崩、穿透、击穿问题。认识这些问题背后产生的本质,以后在涉及到利用缓存业务的时候,尤其是并发高的时候,特别需要注意这些问题
缓存雪崩
缓存雪崩是指缓存中大量的数据同一时刻失效或者缓存不可用,而查询数据量巨大,直接打到数据库,引起数据库压力过大甚至宕机的现象。
导致的可能原因:
- key设置过期的时间一致
- redis不是高可用,挂掉了。
解决方案:
- 批量往Redis存数据的时候,把每个Key的失效时间都加个随机值
- 搭建高可用的redis,比如哨兵模式或者集群模式
- 兜底逻辑使用熔断机制。防止过多请求同时打到DB
缓存击穿
缓存击穿指并发查同一条数据,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库。
缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
解决方案:
- 热点key缓存不失效:对热点key可以设置永不过期。
- 使用互斥锁或堵塞队列:这样可以控制数据库的线程访问数,减小数据库的压力,但也会让系统吞吐率有所下降
缓存穿透
指查询一个数据库一定不存在的数据【绕过缓存去查数据库。(尤其是黑客攻击)】
原因:
- 黑客攻击,空数据查询通常指攻击者伪造大量不存在的数据进行访问(比如不存在的商品信息、用户信息)
- 网络爬虫,缓存污染通常指在遍历数据等情况下冷数据把热数据驱逐出内存,导致缓存了大量冷数据而热数据被驱逐。
解决:
- 添加一些校验。接口层增加校验,比如用户鉴权校验,参数做校验,不合法的参数直接代码Return,比如:id 做基础校验,id <=0的直接拦截等。
- 网关层Nginx配置IP或者代码逻辑实现限制ip同一时间段的访问次数
- 利用布隆过滤器来实现对缓存 key 的检验
猜你喜欢
- 2024-10-16 鉴权必须了解的 5 个兄弟:cookie、session、token、jwt、单点登录
- 2024-10-16 gitlab和nginx冲突问题(gitlab nginx)
- 2024-10-16 nginx 限制了你的想象?那么请用openresty
- 2024-10-16 WordPress 网站被搜索恶意攻击怎么办?不行就上宝塔Nginx防火墙
- 2024-10-16 网站被恶意镜像后的解决办法(网站被恶意镜像后的解决办法是什么)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)