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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 缓存雪崩、缓存穿透、缓存击穿 -> 正文阅读

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

缓存雪崩

同一时间点 大面积key失效,导致后续的请求都落在数据库上,造成数据库短时间内承受大量请求

可能导致雪崩的场景:

  • 缓存重启
  • 第一次启动服务 缓存从还没有数据 会导致雪崩

解决方案:

  • 过期时间 随机设置
  • 给每一个缓存增加 相应的缓存标记,记录 缓存 是否失效,如果 缓存标记 失效了,则更新缓存数据。比较消耗性能,要一直监控缓存标记
  • 缓存预热,启动应用之前,先把部分热点数据提前放到缓存中
  • 互斥锁,在第一次判断缓存没有要查询数据库的时候,把 对应的缓存key 锁起来,限制统一时间只能有一个线程访问这个缓存key,其他线程要么返回失败,要么自旋等待。在查询完数据库之后将数据放入缓存,同时 释放这个 互斥锁,目的是避免短时间内大量操作 同一个key

缓存穿透

缓存 和 数据库中 都没有数据,请求还是会落在数据库中
通常这种场景来自于 网络攻击

解决方案:

  • 业务接口层增加校验,ex:用户鉴权校验、id <=0校验
  • 缓存 和 数据库中 都没有的数据,也可以在缓存存一个key-value=null的键值对,防止 针对某一个key的暴力工具
  • 布隆过滤器,将 所有可能存在的数据 哈希到 一个足够大的 bitmap 中,一个一定不存在的数据 会被这个bitmap 过滤掉,避免了对底层存储系统的查询压力;但是存在的数据 不一定真的存在 bitmap中(待整理)

缓存击穿

缓存中没有、数据库中有(一般这种情况是缓存时间到期)
和雪崩不同的是,击穿 是指 并发查询同一条数据,雪崩是指很多不同数据都过期了

解决方案

  • 设置 热点数据 永不过期
  • 针对 这个同一条数据 增加互斥锁
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:53:24  更:2021-09-11 18:56:00 
 
开发: 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年11日历 -2024/11/23 20:17:23-

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