Kevin's blog Kevin's blog
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档

Kevin

你可以迷茫,但不可以虚度
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档
  • 基础

  • JVM

  • Spring

  • Redis

    • 基础
    • 位图|布隆
    • 过期删除
    • 持久化
    • 缓存雪崩|击穿|穿透
      • 1 缓存雪崩
        • 1.1 什么是缓存雪崩?
        • 1.2 缓存雪崩有什么解决方案?
      • 2 缓存击穿
        • 2.1 什么是缓存击穿?
        • 2.2 缓存击穿有什么解决方案?
      • 3 缓存穿透
        • 3.1 什么是缓存穿透?
        • 3.2 缓存穿透有什么解决方案?
    • 集群
    • Redisson分布式锁
  • 消息中间件

  • 持久化

  • 算法

  • 网络

  • 系统架构

  • 知识整理
  • Redis
luoxiaofeng
2022-05-08
目录

缓存雪崩|击穿|穿透

# 1 缓存雪崩

# 1.1 什么是缓存雪崩?

缓存同一时间大面积失效,后面请求全部落到数据库,造成数据库短时间内承受大量请求而崩掉。

# 1.2 缓存雪崩有什么解决方案?

步骤 解决方案
事前 1)尽量保证整个redis集群高可用,发现机器宕机尽快补上。
2)缓存失效时间可以在原来的基础上加多一个随机值,避免同一时间集体失效。
事中 开启限流或者降级,避免Mysql崩掉。
事后 利用redis持久化机制保存的数据尽快恢复缓存。

# 2 缓存击穿

# 2.1 什么是缓存击穿?

Key对应的数据存在,但是在redis未缓存或者已经过期,此时大量请求过来,由于redis中不存在,需要去数据库查询之后再回写redis缓存,造成大量请求直接打在数据库上,很容易把数据库压垮。

# 2.2 缓存击穿有什么解决方案?

1)定时任务主动刷新缓存。

2)通过加锁的方式解决,用普通jvm的锁就可以。

查缓存时能命中则直接返回,不能命中则需要获取锁才能进行下一步访问数据库等操作。

# 3 缓存穿透

# 3.1 什么是缓存穿透?

Key对应的数据不存在,一般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。

# 3.2 缓存穿透有什么解决方案?

1)最简单粗暴的办法,如果一个查询返回的数据为空(不管数据不存在,还是系统故障),仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

2)采用布隆过滤器,将有值的key存放到布隆过滤器中,则没有值的key必然会被过滤掉。

#Redis
上次更新: 2022/06/12, 13:37:23
持久化
集群

← 持久化 集群→

最近更新
01
AI是如何学习的
06-05
02
chatGpt提示原则
06-05
03
提示词工程实践指南
06-05
更多文章>
| Copyright © 2022-2025 Kevin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式