Redis缓存穿透、雪崩问题优化

1.缓存

在这里插入图片描述
Redis做缓存是很常见的应用场景。如果客户端请求在缓存层命中就直接返回,如果没有命中就去读取存储层,存储层读取到后就写入缓存层,然后再返回到客户端。
缓存的优点:加速读写的速度、降低后端负载
缓存的缺点:数据的不一致性、代码维护成本增大

2.缓存穿透优化

什么是缓存穿透?
请求cache拿不到数据,就会去存储层拿,都拿不到时,返回空值(可能会返回大量空值)。或者代码有问题,拿不到数据,就会一直请求数据,导致后端over。
简单的说就是去Redis中找数据,没有找到 ,然后去MySQL中找数据 还是没找到。这时如果不做任何处理,后面的所有的这个操作 都会访问MySQL,这样MySQL就会被Over掉,这种现象就称为缓存穿透。
如何解决?
缓存层缓存空值:当去MySQL中找数据时,如果没有找到,那么直接返回一个为“”的字符串, 表明有数据,只是值为“”而已,这样后面所有的线程就不会再去访问MySQL了。
在这里插入图片描述

3.缓存雪崩优化

什么是缓存雪崩?
1、Redis死了,那么所有请求都会去 请求MySQL,这个时候MySQL无法承载压力,也会Over。
2、大量的key同时过期,这个时候就会造成大量的请求去访问MySQL,这样MySQL也可能被over
简单说就是redis挂了,客户端直接请求到数据库里面,数据库负载非常高,甚至把数据库拖挂了。
在这里插入图片描述

解决方法:
1、保持缓存层服务器的高可用。
监控、集群、哨兵。当一个集群里面有一台服务器有问题,让哨兵踢出去。
2、依赖隔离组件为后端限流并降级。
比如推荐服务中,如果个性化推荐服务不可用,可以降级为热点数据。
3、提前演练。
演练缓存层crash后,应用以及后端的负载情况以及可能出现的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值