mysql数据库击穿_缓存穿透、击穿、雪崩区别和解决方案
自强学堂
文中的cache指缓存,比如redis,db指数据库,比如mysql。
一、缓存的三种模式
这里主要指的是应用代码对 cache 和 db 中数据的维护方式。
1.1 应用代码同时更新 cache 和 db
a)数据写入流程
b)数据读取流程
1.2 应用代码只更新 cache,cache 负责同步更新 db
此时可以将 cache 和 db 看成一个整体,db 自己维护 cache。
1.3 应用方代码更新缓存,另外将 cache 中数据定期更新到 db
类似于 Linux 文件系统中的 page cache。
这个可能会导致数据不一致,甚至数据丢失。
二、缓存使用要注意的问题
当缓存使用不当时,可能会导致请求瞬间打到db,db 扛不住挂掉。
常见的有以下三种问题。
2.1 缓存穿透
概念说明:指 cache 和 db 中都没有数据,读完 cache 没有,再读 db 还是没有,每次请求到 cache 和 db。
解决方法:
a).拦截非法请求,比如不正常的 id 请求直接拒绝。
b).没有数据时也 cache 下,过期时间可设置短点,不把过多请求打到 db 去。
c).使用 Write Behind Caching 模式,命中不了 cache 不读取 db。这时需要注意 cache 大小,此时的数据都存在了内容。
d).采用布隆过滤器,不存在的 key 直接过滤;布隆过滤器判断存在,则数据可能存在,如果判断不存在,则肯定不存在。
一般建议前两种,实现起来比较简单
2.2 缓存击穿
概念说明:一般是少量热点数据过期(比如微博热搜),导致大量请求查 cache 没有,又查 db。
解决方法:
a)热点 key 永不过期,异步更新。
b)更新热点 key 时加锁,同一个 key 最好只有一个请求打到 db。
c)接口限流,熔断、降级。
2.3 缓存雪崩
概念说明:大量 cache 数据同时过期,导致大量请求打到 db。
解决方法:
a).热点 key 永不过期,异步更新。
b).防止同时大量数据过期,cache 过期时间随机抖动下。
mysql数据库击穿_缓存穿透、击穿、雪崩区别和解决方案相关推荐
- redis缓存雪崩、缓存击穿和缓存穿透还傻傻分不清?看这篇就够了
前言 关于Redis的高频问题,缓存雪崩.缓存击穿和缓存穿透一定少不了,相信大家在面试中都被问到过类似的问题.为什么这些问题一直热门呢?因为我们在使用Redis缓存时,这些问题都是很容易遇到的.接下来 ...
- Redis 的缓存异常处理 —— 缓存雪崩、缓存击穿、缓存穿透
Redis 的缓存异常处理 -- 缓存雪崩.缓存击穿.缓存穿透 在实际应用 Redis 过程中,如果将 Redis 作为数据库的缓存,经常会遇到这几个问题:缓存雪崩.缓存击穿.缓存穿透等. 缓存雪崩 ...
- redis面试:缓存雪崩、缓存击穿、缓存穿透
缓存系统的三大问题 缓存雪崩 问题 所谓雪崩就是原来有所支撑的冰雪,某一瞬间失去依托,瞬间涌下来. 对比高并发系统,如果缓存系统故障,大量的请求无法从缓存完成数据请求,就全量冲向磁盘数据库系统,导致数 ...
- Redis-什么是缓存雪崩、缓存击穿、缓存穿透
用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了. 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访 ...
- Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案
前言 在日常的项目中,缓存的使用场景是比较多的.缓存是分布式系统中的重要组件,主要解决在高并发.大数据场景下,热点数据访问的性能问题,提高性能的数据快速访问.本文以Redis作为缓存时,针对常见的缓存 ...
- 缓存雪崩、缓存击穿、缓存穿透
这里写目录标题 0. 前言 1. 缓存雪崩 (1). 什么是缓存雪崩? (2). 分析: (3). 解决方案: 2. 缓存击穿 (1). 什么是缓存击穿? (2). 分析: (3). 解决方案: 3. ...
- 再也不怕,缓存雪崩、缓存击穿、缓存穿透
用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了. 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访 ...
- Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透
Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透 简单介绍一个redis? redis是内存中的数据结构存储系统,一个key-value类型的非关系型数据库,可持久化的数据库 ...
- Redis 缓存穿透、雪崩、缓存数据库不一致、持久化方式、分布式锁、过期策略
1. Redis 缓存穿透 1.1 Redis 缓存穿透概念 访问了不存在的 key,缓存未命中,请求会穿透到 DB,量大时可能会对 DB 造成压力导致服务异常. 由于不恰当的业务功能实现,或者外部恶 ...
最新文章
- java 字符串用法_java中字符串的用法
- Ubuntu18.04 CUDA与cudnn安装
- uva 129 回溯法入门
- 粉色温馨——HTML框架示例
- linux安装mq报5724,linux下MQ简单配置手册.doc
- 面向对象中的修饰关键词
- php null截断 漏洞,CVE-2015-3412,CNNVD-201507-164|PHP NULL Character 安全漏洞 - 信息安全漏洞门户 VULHUB...
- Django实现省市县级联菜单
- html5 canvas 画直线
- JAVA 内部类 泛型 实现堆栈
- MySQL(19)-----日期和时间函数
- 关于新版本Firefox浏览器无法使用firebug与firepath问题的解决方案
- 第四届CSTQB®国际软件测试高峰论坛
- origin图上显示数据标签_Origin中如何将曲线上的数据显示出来?
- linux环境sphinx搭建,Sphinx安装配置应用
- unity如果编辑器意外崩溃了,但场景未保存,怎么办
- element-ui vue-quill-editor 富文本编辑器 解决插入图片不采用base64 从服务器传图片在显示返回url
- 仿微信朋友圈动态列表
- 什么是第一,第二,第三范式
- 技术状态管理(五)-技术状态记实
热门文章
- python脚本迁移数据库_Django 数据库迁移脚本
- 干货来袭!腾讯T4大佬,十分钟教你用svg做出精美的动画
- c语言用十年算入门,初识C语言_十年饮冰 难凉热血的技术博客_51CTO博客
- Drawboard PDF常见问题以及使用技巧(持续更新)
- 数字信号处理——DDS模块设计(3)
- html用div排版类型table,DIV排版和Table排版的区别
- SpringBoot中关于RunWith以及SpringBootTest
- 从numpy掩码到pytorch掩码
- 前后端分离项目部署到服务器(超详细)
- 照片文件与计算机系统,如何备份电脑中的照片等重要文件