Redis 缓存穿透、雪崩、击穿以及相关解决方案

缓存流程:

Redis 缓存穿透、雪崩、击穿以及相关解决方案

缓存穿透:

  1. 什么是缓存穿透:是指 redis 和数据库都没有这个数据,大量请求该数据造成数据库挂掉,该请求一般是非正常用户
    Redis 缓存穿透、雪崩、击穿以及相关解决方案
  2. 解决方案:
  3. 布隆过滤器:将数据库中所有的查询条件放入布隆过滤器中,当大量的请求过来的时候, redis 里面没有,再去布隆过滤器进行查,如果请求存在,则继续查;如果不存在,直接丢弃。
  4. 第一次请求打到数据库,无法是否能查询到数据还是空,都返回给 redis 做缓存,防止二次请求穿透 redis
  5. IP 拉黑
  6. 参数合法性校验,参数不合法,直接返回

缓存雪崩

  1. 什么是缓存雪崩:redis 缓存中 key 同一时间大量失效,大量的请求(不同key)全部打到数据库,就像雪崩来了一样
    Redis 缓存穿透、雪崩、击穿以及相关解决方案
  2. 解决方案:
  3. 设置缓存失效时间,不要在同一时间失效,在设置缓存的时候随机初始化有效时间,这样就不会让所有的缓存同时失效
  4. 不设置失效时间,让缓存永远不失效
  5. 跑定时任务,定时刷缓存,然后设置新的失效时间
  6. redis 集群,热点 key 部署到不同节点的 redis 上

缓存击穿

  1. 什么是缓存击穿:在高并发情况下,如果好多请求都在查询一个 Key ,这个 key 因为某些原因失效了,这样就会导致大量的请求直接打到数据库上了,造成数据库挂掉
    Redis 缓存穿透、雪崩、击穿以及相关解决方案
  2. 解决方案:
  3. 缓存永远不过期
  4. 分布式锁:第一个请求拿到了锁,到数据库获取数据,并缓存到 redis,其他请求被阻塞,睡眠几毫秒然后再次请求 redis ,这时的 redis 已经有缓存,直接返回
  5. 单体应用使用互斥锁

什么是布隆过滤器?

参考:
https://www.bilibili.com/video/BV1f5411b7ux
https://mp.weixin.qq.com/s/SlfLgsfbvytxNS46fTFUdA

直面挑战,躬身入局

Original: https://www.cnblogs.com/liyiran/p/13832500.html
Author: 熠然
Title: Redis 缓存穿透、雪崩、击穿以及相关解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529048/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • postgre中类似oracle的sql%rowcount用法

    get diagnostics cnt := row_count; 现在有两个表tab1和tab2,两个表的格式相同,tab1中有1000条数据,tab2中0条数据 创建测试功能函…

    Linux 2023年6月6日
    095
  • k8s集群中网络实现通信原理

    1)安装Docker时,创建一个名为 docke0 的虚拟网桥,虚拟网桥使用”10.0.0.0 -10.255.255.255 “、”172.1…

    Linux 2023年6月14日
    0101
  • cdn缓存顺序优先级

    posted @2022-09-26 17:28 爱折腾的大臭臭 阅读(10 ) 评论() 编辑 Original: https://www.cnblogs.com/linuxsh…

    Linux 2023年6月6日
    0116
  • 微信小程序全局变量的设置、使用、修改过程解析

    微信小程序全局变量的设置、使用、修改过程解析 全局变量的设置 在miniprogram > app.js 文件中设置,globalData对象就是存储全局变量的。 php;g…

    Linux 2023年6月7日
    0108
  • @Aspect

    AOP是指在程序运行期间动态地将某段代码切入到指定位置并运行的编程方式。 AOP详解可参考:https://blog.csdn.net/javazejian/article/det…

    Linux 2023年6月8日
    0109
  • 每日好书推荐:《Kali Linux渗透测试的艺术》PDF高清版

    Original: https://www.cnblogs.com/bnn86/p/15344056.htmlAuthor: 测试楠楠君Title: 每日好书推荐:《Kali Li…

    Linux 2023年5月27日
    0114
  • Action Sheets 和 Activity Views

    行动表行动表是一种特殊的提醒方式,它展示了与当前环境相关的两个或多个选择。在较小的屏幕上,动作表会从屏幕的底部滑上去;在较大的屏幕上,动作表会以弹出式的方式一次性出现。 在执行一个…

    Linux 2023年6月7日
    0100
  • CH9344 Windows驱动安装与GPIO使用教程

    USB 转四串口芯片 CH9344 用于为 USB 主机扩展 4 路高速异步串口,支持串口波特率高达 12Mbps。芯片内部高度集成,外围精简,提供 VIO 电源引脚,部分串口 I…

    Linux 2023年6月7日
    089
  • 文本编辑命令

    一、vim编辑器 1、vim的三种模式 一般模式(正常模式):以vim打开文件就直接进入到此模式,此模式中可以使用上下左右按键进行移动光标,也可以在此模式下进行文件的复制粘贴删除等…

    Linux 2023年6月6日
    0114
  • VMware虚拟机centOS7下配置桥接网络

    在VMware虚拟机下centOS7下配置桥接网络 首先,在以下的配置都操作好之后,要确认宿主机的网络连接方式, 若为需要认证的网络,则可能会出现宿主机与虚拟机能互相ping,但虚…

    Linux 2023年6月6日
    0134
  • jenkins pipeline中获取shell命令的输出

    //获取标准输出//第一种result = sh returnStdout: true ,script: ” Original: https://www.cnblogs…

    Linux 2023年5月28日
    093
  • 002 Linux 文件与目录命令的必会姿势!

    文件及目录的路径切换、显示、创建、复制、移动和删除操作的常用姿势,必会!因为这些命令是使用 Linux 系统进行工作的基础,是摆脱小白的第一步,是构建大厦的基石!发现锅锅真是个话痨…

    Linux 2023年5月27日
    090
  • Redis Hashes 数据类型简述

    Redis Hashes 是我们日常使用中比较高频的 Redis 数据类型,内部使用 Redis 字典结构存储,底层实现之一为哈希表结构。 下面从哈希表节点,哈下表结构,Redis…

    Linux 2023年5月28日
    086
  • Linux 下安装 node.js

    这里介绍两种安装方式: 编译安装和使用编译后的安装包安装。 安装目录: /usr/local 一、使用编译安装包安装 1、进入安装目录: 2、下载安装包: 3、解压: 4、进入解压…

    Linux 2023年6月13日
    0100
  • 爱前端公开课学习笔记——JS01 认识js 变量

    认识js 在谷歌浏览器的控制台中右键单击空白处,选择检查可以打开控制台 查看console.log输出的内容。 JS的注释 是”//”或者”/ …

    Linux 2023年6月14日
    0102
  • 总结:弹性伸缩的五个条件与六个教训

    前言弹性伸缩是云计算时代给我们带来的一项核心技术红利,但是 IT 的世界中,没有一个系统功能可以不假思索的应用到所有的场景中。这篇文章,我们将应用企业级分布式应用服务-EDAS 的…

    Linux 2023年6月8日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球