IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis之缓存击穿、缓存穿透和缓存雪崩 -> 正文阅读

[大数据]Redis之缓存击穿、缓存穿透和缓存雪崩

1.缓存击穿

缓存击穿是指热点key失效之后,所有请求都访问到数据库,对数据库造成较大压力。
解决方案:
1.加锁,获取到锁的线程去更新缓存;如果是集群部署,则需要使用分布式锁。问题:没获取到锁的其他线程走什么逻辑呢?如果是等待获取锁,那么同一时刻所有线程串行获取锁,后获取到锁的线程等待时间较长。如果直接返回获取不到,要根据具体情况考虑是否能够接受。

2.热点key缓存设置永不失效,更新采用异步更新的方式。具体实现可以是启动一个单独线程去定时判断缓存是否失效,失效时进行缓存更新。 存在更新不及时的情况,不能保证缓存和数据库的一致性。

2.缓存穿透

缓存穿透是指大量查询数据库中不存在的数据,这些数据不存在于数据库,也没有被缓存。所以每次请求都被打到数据上,造成数据库压力增大。
解决方案:
1.缓存空值,设置较短过期时间。
既然查询出来的是null,那么直接缓存好了。这样之后的查询就走缓存了。但是要注意一个问题是,后面对应的数据可能又被创建了,而数据创建时一般是不会直接写到缓存的(一般在数据第一次读取时写入缓存、数据被更新时删除缓存)。所以这里缓存的空值感知不到数据库变化,就会造成缓存和数据库不一致问题。为了减少这个问题,可以设置一个较短的过期时间。相当于定时去数据库里读取一次。

缺点:数据短时间不一致
优点:容易实现

2.布隆过滤器。
使用布隆过滤器存储所有合法的值。访问数据库前先过一遍布隆过滤器,存在的数据才去访问数据库。注:布隆过滤器特点是返回true说明key可能存在,返回false说明key一定不存在。这样就可以把一定不存在的key过滤掉了。
缺点:需要多一次布隆过滤器的访问,需要权衡访问量等
优点:避免了数据不一致

实际使用的一个case:记一次线上接口调用量过大报警问题处理

3.缓存雪崩

缓存雪崩是指大量key在同一时间过期,导致同时访问数据库,造成数据库压力过大,进而带来系统崩溃等风险。

解决方案:
1.给过期时间加减一个随机数,避免同一个时刻过期。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:25:11  更:2022-06-06 17:26:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/29 8:00:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码