没有合适的资源?快使用搜索试试~ 我知道了~
15-缓存的使用姿势(三):缓存穿透了怎么办?_For_group_share1
需积分: 0 0 下载量 168 浏览量
2022-08-03
19:04:48
上传
评论
收藏 489KB PDF 举报
温馨提示
试读
8页
1.它在判断元素是否在集合中时是有定错误率的,如它会把不是集合中的元素判断为处在集合中 2.不持删除元素 1.选择多个Hash函数计算多个Hash值,这样可以减
资源详情
资源评论
资源推荐
15-缓存的使⽤姿势(三):缓存穿透了怎么办?15-缓存的使⽤姿势(三):缓存穿透了怎么办?
你好,我是唐扬。
我⽤三节课的时间,带你深⼊了解了缓存,你应该知道,对于缓存来说,命中率是它的⽣命线。
在低缓存命中率的系统中,⼤量查询商品信息的请求会穿透缓存到数据库,因为数据库对于并发的承受能⼒
是⽐较脆弱的。⼀旦数据库承受不了⽤⼾⼤量刷新商品⻚⾯、定向搜索⾐服信息,就会导致查询变慢,导致
⼤量的请求阻塞在数据库查询上,造成应⽤服务器的连接和线程资源被占满,最终导致你的电商系统崩溃。
⼀般来说,我们的核⼼缓存的命中率要保持在99%以上,⾮核⼼缓存的命中率也要尽量保证在90%,如果低
于这个标准,那么你可能就需要优化缓存的使⽤⽅式了。
既然缓存的穿透会带来如此⼤的影响,那么我们该如何减少它的发⽣呢?本节课,我就带你全⾯探知,⾯对
缓存穿透时,我们到底有哪些应对措施。不过在此之前,你需要了解“到底什么是缓存穿透”,只有这样,
才能更好地考虑如何设计⽅案解决它。
什么是缓存穿透什么是缓存穿透
缓存穿透其实是指从缓存中没有查到数据,⽽不得不从后端系统(⽐如数据库)中查询的情况。你可以把数
据库⽐喻为⼿机,它是经受不了太多的划痕和磕碰的,所以你需要给它贴个膜再套个保护壳,就能对⼿机起
到⼀定的保护作⽤了。
不过,少量的缓存穿透不可避免,对系统也是没有损害的,主要有⼏点原因:
既然缓存的容量有限,并且⼤部分的访问只会请求20%的热点数据,那么理论上说,我们只需要在有限的缓
存空间⾥存储20%的热点数据就可以有效地保护脆弱的后端系统了,也就可以放弃缓存另外80%的⾮热点数
据了。所以,这种少量的缓存穿透是不可避免的,但是对系统是没有损害的。
那么什么样的缓存穿透对系统有害呢?答案是⼤量的穿透请求超过了后端系统的承受范围,造成了后端系统
的崩溃。如果把少量的请求⽐作⽑⽑细⾬,那么⼀旦变成倾盆⼤⾬,引发洪⽔,冲倒房屋,肯定就不⾏了。
产⽣这种⼤量穿透请求的场景有很多,接下来,我就带你解析这⼏种场景以及相应的解决⽅案。
缓存穿透的解决⽅案缓存穿透的解决⽅案
先来考虑这样⼀种场景:在你的电商系统的⽤⼾表中,我们需要通过⽤⼾ID查询⽤⼾的信息,缓存的读写策
略采⽤CacheAside策略。
⼀⽅⾯,互联⽹系统通常会⾯临极⼤数据量的考验,⽽缓存系统在容量上是有限的,不可能存储系统所有
的数据,那么在查询未缓存数据的时候就会发⽣缓存穿透。
另⼀⽅⾯,互联⽹系统的数据访问模型⼀般会遵从“80/20原则”。“80/20原则”⼜称为帕累托法则,
是意⼤利经济学家帕累托提出的⼀个经济学的理论。它是指在⼀组事物中,最重要的事物通常只占20%,
⽽剩余的80%的事物确实不重要的。把它应⽤到数据访问的领域,就是我们会经常访问20%的热点数据,
⽽另外的80%的数据则不会被经常访问。⽐如你买了很多⾐服,很多书,但是其实经常穿的,经常看的,
可能也就是其中很⼩的⼀部分。
坐在地心看宇宙
- 粉丝: 24
- 资源: 330
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0