Linux中使用reids(六)雪崩、穿透、击穿解决方案

本文详细介绍了Linux环境中Redis缓存遇到的三大问题:雪崩、穿透和击穿。针对这些问题,提出了包括空值缓存、布隆过滤器、设置热点数据永不过期、使用锁和构建多级缓存架构等解决方案,旨在保护数据库免受高并发请求的压力。
摘要由CSDN通过智能技术生成

雪崩、穿透、击穿解决方案

1、缓存穿透

缓存穿透前提是:Redis和MySQL中都没有,然后不停的直接请求MySQL,会压垮数据库

1.1、问题描述

key对应的数据在数据库MySQL中并不存在,每次针对此key的请求从redis缓存获取不到也不存在,请求都会压到数据库MySQL,从而可能压垮数据库。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击就会直接请求MySQL可能压垮数据库。

用户需要查询一个数据,但是redis中没有(比如说mysql中id=-1的数),直接去请求MySQL,当很多用户同时请求并且都么有命中!于是都去请求了持久层的数据库,那么这样会给持久层数据库带来非常大的压力。一般出现这样的情况都不是正常用户,基本上都是恶意用户!

1.2、解决方案

(1) 对空值缓存:如果一个查询返回的数据为空(不管是数据是否不存在),我们仍然把这个空结果(null)进行缓存,设置空结果的过期时间会很短,最长不超过五分钟

当存储层查不到,即使是空值,我们也将其存储起来并且在Redis中设置一个过期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值