缓存三问

简介: 缓存三问

缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。

解决方案:

  1. 接口层增加校检,如果用户鉴权校检,ID做基础校检,ID<=0 的直接拦截;
  2. 从缓存取不到的数据,在数据库中也没有取到,这是也可以将key-value 对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
  3. 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap 拦截掉,从而避免了对底层存储系统的查询压力

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

解决方案

  1. 设置热点数据永不过期
  2. 加互斥锁



缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。

解决方案

  1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
  2. 给每一个缓存数据增加响应的缓存标记,记录缓存是否失效,如果缓存标记失效,即更新数据缓存
  3. 缓存预热
  4. 互斥锁


目录
相关文章
|
1月前
|
存储 缓存 安全
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(存穿透、缓存击穿和缓存雪崩)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(存穿透、缓存击穿和缓存雪崩)
45 1
|
3月前
|
存储 缓存 算法
缓存大作战:强缓存 vs. 协商缓存,谁是王者?
缓存大作战:强缓存 vs. 协商缓存,谁是王者?
|
3月前
|
存储 缓存 算法
珍爱生活远离“缓存之战”——大话高并发之缓存应用技巧
珍爱生活远离“缓存之战”——大话高并发之缓存应用技巧
|
7月前
|
存储 设计模式 缓存
缓解缓存击穿的大杀器之---singleflight深入浅出
缓解缓存击穿的大杀器之---singleflight深入浅出
186 0
缓解缓存击穿的大杀器之---singleflight深入浅出
|
7月前
|
缓存 数据库
【有奖征文】高并发场景下的缓存穿透、失效和雪崩问题及解决方案
高并发场景下的缓存穿透、失效和雪崩问题及解决方案
39 0
|
9月前
|
存储 缓存 NoSQL
如何设计一个超牛逼的本地缓存,太香了
最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。
|
存储 缓存 NoSQL
Redis缓存穿透和雪崩相关概念(面试高频,工作常用)
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面,但同时,它也带来了一些问题,其中,最重要的问题,就是数据的一致性问题。从严格意义上讲,这个无解。如果对数据的一致性要求很高,那么就不能使用缓存。
131 0
Redis缓存穿透和雪崩相关概念(面试高频,工作常用)
|
缓存
三张图带你吃透缓存击穿、雪崩、穿透(超详细)
三张图带你吃透缓存击穿、雪崩、穿透(超详细)
104 0
三张图带你吃透缓存击穿、雪崩、穿透(超详细)
|
缓存 NoSQL 安全
黑客攻防:缓存穿透终极解决方案——布隆过滤器
不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大噪,在面试中面试官问到怎么避免缓存穿透,你的第一反应可能就是布隆过滤器,缓存穿透=布隆过滤器成了标配,但具体什么是布隆过滤器,怎么使用布隆过滤器不是很清楚,那今天我们就来把它说清楚,讲明白。。 缓存穿透 大家看下这幅图,用户可能进行了一次条件错误的查询,这时候redis是不存在的,按照常规流程就是去数据库找了,可是这是一次错误的条件查询,数据库当然也不会存在,也不会往redis里面写值,返回给用户一个空,这样的操作一次两次还好,可是次数多了还了得,我放redis本来就是为了挡一挡,减轻数据库的压力,现在redis变成了形同虚设.
148 0
黑客攻防:缓存穿透终极解决方案——布隆过滤器
|
缓存 数据库
缓存架构设计细节二三事
本文主要讨论这么几个问题:“缓存与数据库”需求缘起、“淘汰缓存”还是“更新缓存”、缓存和数据库的操作时序、缓存和数据库架构简析。
2270 0

热门文章

最新文章