redis之缓存雪崩

一、前言

本次我们讨论缓存雪崩的事情,缓存雪崩也是非常严重的事故,同样会导致数据库被压垮导致应用系统不可用问题,缓存雪崩和缓存击穿类似,缓存击穿是某个热点数据失效导致大量获取该热点数据的请求到达数据库,将数据库压垮,而缓存雪崩是大量的缓存数据失效,将数据库压垮,有点像增强版的缓存击穿。

二、问题分析

1、大量热点数据同时过期

2、由于宕机或者是网络等问题导致缓存不可用。

三、解决方案

1、对于大量热点数据同时过期,有可能是因为设置了相同的过期时间,导致了在同一时间缓存热点数据大量过期,对于这种问题,我们要避免设置相同的过期时间,可以使用随机的方式,给缓存设置随机过期时间,防止在同一时间节点大量缓存过期。

2、对于缓存不可用问题,我们可以从三个方面考虑

2.1、保证redis的可用性,比如说可以搭建主从、哨兵、集群等,提高redis的可用性。

2.2、测试数据库的最大并发处理能力,假如mysql单库并发能力是2000w,超过这个值MySQL就会被压垮,那么我们可以对请求进行限流,一般在开发系统的时候,nginx可以说是标配,我们使用nginx进行先限流,将请求量控制在2000w之内。

2.3、可以使用本地缓存(比如java中的map就可以做缓存,或者还可以使用mamcached),在redis失效时,可以挡一波,有效防止压垮数据库。

四、结语

本期我们简单介绍了一下缓存雪崩的一些知识,大多都是理论方面的知识,涉及到的一些技能点,我们在后续分享到的时候再详细介绍。

相关推荐
Chandler242 小时前
一图掌握 MySQL 核心要点
数据库·mysql
CodeJourney.2 小时前
从PPT到DeepSeek开启信息可视化的全新之旅
数据库·人工智能·算法·excel·流程图
餘yuqn4 小时前
redis 中 zset 的数据存储方式
redis
GOTXX7 小时前
【Qt】Qt Creator开发基础:项目创建、界面解析与核心概念入门
开发语言·数据库·c++·qt·图形渲染·图形化界面·qt新手入门
猿小喵7 小时前
记录一次TDSQL网关夯住故障
运维·数据库·mysql
电商api接口开发7 小时前
如何在C#中使用LINQ对数据库进行查询操作?
数据库·c#·linq
路在脚下@7 小时前
Redis实现分布式定时任务
java·redis
hnsqls8 小时前
Redis 常问知识
数据库·redis·缓存
经年小栈9 小时前
性能优化-Spring参数配置、数据库连接参数配置、JVM调优
数据库·spring·性能优化
一个小白19 小时前
C++ 用红黑树封装map/set
java·数据库·c++