Redis—击穿、穿透、雪崩

本文详细介绍了Redis中缓存击穿、穿透和雪崩问题的概念及解决方案。击穿是指缓存中数据过期或被淘汰,导致大量请求直接访问数据库;穿透则是缓存和数据库中都没有需要的数据。解决击穿问题可以采用setnx命令实现锁机制,确保并发访问时只有一个线程访问数据库并更新缓存。雪崩问题则需要根据实际情况采取随机延迟请求、使用锁机制或设置随机过期时间来缓解。对于穿透问题,布隆过滤器可以用来过滤大部分不存在的数据请求,减少对数据库的无效访问。
摘要由CSDN通过智能技术生成

一. 概念

redis击穿或者穿透有一个前置条件:一定是高并发的情况下才会发生。

        一般系统的架构设计会在ngnix或者其他微服务设计下阻拦很多的并发量,但是难免访问到redis的并发量还是很多,此时才会出现击穿问题。

击穿:redis曾经拥有,但是后来失去了,KEY的过期导致并发访问数据库

        我们知道redis中的数据key是有失效时间的,或者redis本身也是有淘汰机制的,假设redis中的数据key正好失效或者LRU、LFU淘汰机制把key_value淘汰掉了,假设此时正好并发线程去访问这条数据,redis中没有,只能把大量的请求怼到数据库上,这就是redis击穿。

雪崩:击穿比较侧重某一个key失效,当大量的key同时失效,会造成大量的请求怼到数据库,
就会发生雪崩效应。
重点是大量、同时两个词
穿透:redis本就没有,请求直接全部怼到数据库上,奈何数据库也没有,
导致数据库长时间做无效的连接查询造成损耗。

所以击穿和穿透的区别就出来了:

        击穿:redis中有需要的数据但是过期或者被淘汰了,导致直接全部访问数据库;

        穿透:redis中没有需要的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值