
缓存穿透 / 缓存击穿 / 缓存雪崩 / 缓存一致性
发布日期:2021-05-08 00:12:53
浏览次数:10
分类:原创文章
本文共 404 字,大约阅读时间需要 1 分钟。
先介绍这些概念:
- 缓存穿透: 请求不存在的数据, 缓存中没有查到, 会去数据库中查找
- 缓存击穿: 数据较为热点, 当 key 过期时, 同一时刻, 大量请求进来, 此时缓存还未存入, 请求都落到数据库查找
- 缓存雪崩: 同一时刻, 大量设置过期时间的 key 失效
- 缓存一致性: 缓存和数据库数据不一致
解决办法:
- 缓存穿透: 把这些不存在的数据也缓存起来, 值为 null, 设置较短的过期时间 (例如 30s), 避免攻击者恶意请求不存在的数据, 给数据库造成压力
- 缓存击穿: 有 2 种方式
- 设置热点数据永不过期
- 加锁, 锁的内容是查询 redis / 查询数据库 / 存入 redis
- 缓存雪崩: 过期时间设置随机系数, 避免大量 key 同时过期
- 缓存一致性: 大多数情况下, 操作完数据库后, 删除或者更新缓存即可. 一致性要求高的, 考虑使用 binlog 订阅 mysql 的 canal 实现
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月01日 21时27分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
方法重写
2021-05-08
Threading Programming Guide(多线程编程指南)
2021-05-08
Swift--14类型扩展
2021-05-08
Socket通信原理和基础实践
2021-05-08
Java求逆波兰表达式的结果(栈)
2021-05-08
SDWebImage--http图片加载不出来的问题
2021-05-08
Application received signal SIGSEGV
2021-05-08
MySQL删除数据库时的错误(errno: 39)
2021-05-08
关于MySQL连接时出现的错误之一
2021-05-08
eclipse下Struts2配置文件添加自动提示
2021-05-08
Win10 JDK配置环境变量以及为什么需要配置每部分的原因
2021-05-08
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2021-05-08
SLAM学习笔记-求解视觉SLAM问题
2021-05-08
target加载不出文件的原因之一
2021-05-08
顺序表和链表的优缺点
2021-05-08
普歌-允异团队-HashMap面试题
2021-05-08
Vue_cli实现抽奖
2021-05-08
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
2021-05-08
C语言 希尔排序
2021-05-08
C 语言顺序表查找和折半查找
2021-05-08