中间件redis--缓存雪崩、缓存穿透、缓存击穿-阿里云开发者社区

开发者社区> kyo_yang> 正文

中间件redis--缓存雪崩、缓存穿透、缓存击穿

简介: 中间件redis--缓存雪崩、缓存穿透、缓存击穿
+关注继续查看

缓存雪崩

指的是大量的redis key在同一时间点失效,这时有大量的请求进来,操作直接怼到数据库以至于数据库压力过大甚至崩了

解决方案:

  1. 对于每个key设置随机的过期时间,防止同时过期
  2. 对于热点数据,设置key不过期


缓存穿透

指的是外部大量请求redis以及数据库都不存在的key,如果redis对于不存在value的key不缓存,则每次都请求数据库,如果请求量大的话可能造成数据库崩了

解决方案:

  1. 对于数据库不存在值得key,可以先缓存到redis中即key-null并且设置过期时间
  2. 网关层面做用户鉴权、限流等校验
  3. 定义规则的key,对于不规则的key进行过滤


缓存击穿

指的是某个热点key由于缓存时间到期或者被人误删除导致缓存失效,这时候有大量请求获取这个key,造成数据库压力过大崩了

解决方案:

  1. 热点key不设置过期时间
  2. 读取数据库加上互斥锁
  3. 使用布隆过滤器


布隆过滤器简单介绍(Bloom Filter):

利用高效的算法快速判断某个key是否存在集合中(判断也不是特别精准,会存在误差,当判断该key不存在时,就肯定不存在;当判断该key存在时也有可能不存在),当发生缓存击穿时,布隆过滤器会有效减少数据库的压力

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
页面缓存问题
惯例: 我是温浩然: 当访问一个页面时,可能有JS的操作,此时,会对JS有缓存。当你修改JS代码后,重新刷新页面,可能js还是没更新以前的。这样就需要把页面进行强制刷新,按住Ctrl+F5,强制刷新页面就可以了。
842 0
Java模拟并解决缓存穿透
Java模拟并解决缓存穿透什么叫做缓存穿透缓存穿透只会发生在高并发的时候,就是当有10000个并发进行查询数据的时候,我们一般都会先去redis里面查询进行数据,但是如果redis里面没有这个数据的时候,那么这10000个并发里面就会有很大一部分并发会一下子都去mysql数据库里面进行查询了 解决缓存穿透首先我模拟一下缓存穿透比如下面的代码在这里插入图片描述Pom.
634 0
Redis 缓存雪崩、击穿、穿透
什么是缓存雪崩、击穿、穿透
708 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6937 0
缓存穿透 缓存雪崩
1. 缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。 解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。
1132 0
Java内存缓存-通过Map定制简单缓存
缓存 在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。 为什么要用缓存 场景 在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。
1007 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7772 0
解决微服务缓存常见问题——缓存击穿
以简短语言说明缓存击穿概念及应对场景
1223 0
+关注
7
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载