Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩

缓存穿透

描述

用户需要查询一个数据,例如要查一张ASSET_CODE = '999999'的卡片,查询redis中没有,就直接去请求数据库,数据库中也不存在对应的数据,返回空或错误,当很多用户同时请求并且都没有命中!于是都去请求了持久层的数据库,那么这样会给持久层数据库带来非常大的压力。当高并发或有人利用不存在的Key频繁攻击时,数据库的压力骤增,甚至崩溃,这就是缓存穿透问题。
*

解决方案

  1. 合法请求校验

  2. 缓存空对象

  3. 布隆过滤器

  4. 用户黑名单

缓存击穿

描述

生产上有一个非常热点的key,在不停的扛着大并发,当这个key失效时,一瞬间大量的请求冲到持久层的数据库中,就像在一堵墙上某个点凿开了一个洞!
*

解决方案

  1. 设置热点key永不过期

  2. 加互斥锁,同一时间只有一个线程能访问数据库查询这个key,查到了更新到缓存里,剩下的线程可以正常查询Redis缓存

缓存雪崩

描述

在某一个时间段,Redsi缓存的key大量集中同时过期失效了,所有的请求全部冲到持久层数据库上,导致持久层数据库挂掉!
*

解决方案

  1. 搭建redis集群

  2. 加互斥锁,同一时间只有一个线程能访问数据库查询这个key,查到了更新到缓存里,剩下的线程可以正常查询Redis缓存

  3. 设置不同的过期时间,让缓存失效的时间点尽量均匀

相关推荐
CoderYanger17 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
FungLeo1 天前
成为全栈·基础补充·缓存的层次与失效:浏览器、CDN、服务端、数据库
缓存·cdn·数据一致性·http缓存·成为全栈·flutter缓存
我不会起名字3221 天前
Redis 从 0 到 1(三十三):机器断电 Redis 起不来——AOF/RDB 损坏的 4 步抢救流程
redis·数据恢复·aof·rdb·排查
code2cat1 天前
【随笔】KV缓存量化:省下的显存,要付出多少数值误差
人工智能·缓存·大语言模型
csdn_aspnet1 天前
Redis 入门:Windows、Mac安装指南
数据库·windows·redis·缓存·mac
IT规划师1 天前
Redis 数据类型全解 - HyperLogLog:12 KB 估出亿级 UV(八)
redis·uv·hyperloglog·.net10
Pniubi1 天前
缓存击穿的解决方案
缓存
aiks_yuan2 天前
Token 放 Redis 还是用 JWT:Java 实测验签和查 Redis 耗时,退出登录、改密码踢下线怎么做(jjwt 0.12 + Redis 7.2)
redis
我不会起名字3222 天前
Redis 从 0 到 1(二十九):CPU 突然 100%——commandstats 定位法与 6 步排查链路
redis·cpu·慢查询·排查·commandstats