redis-缓存击穿\穿透\雪崩

本文探讨了高并发场景下缓存系统面临的三大挑战:击穿、穿透和雪崩现象。击穿指缓存失效导致大量请求直接访问数据库;穿透则是请求的数据在数据库中不存在;雪崩则因大量缓存同时失效引发。文章提出了相应的解决方案,如使用锁机制、布隆过滤器和随机过期时间等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

击穿

**高并发**请求下,key过期或者LRU,LFU进行了清除。导致大量请求并发访问数据库
阻止并发到数据库
1get key  获得key
2,setnx    设置锁
3-1,ok,去 DB  获取到锁,去数据库查
3-2falsesleep  -> 1   没有获取到锁,休眠一段时间,重复一步骤。或者设置key存在后直接返回

zookeeper

穿透

从业务接收查询的是数据库中根本不存在的数据
布隆过滤器,位图存储是否存在数据,存在就去查库(有小于1%穿透可能),不存在就直接返回。但是不能删除,可以使用布谷鸟过滤器。或者设置空key,直接返回,不到达布隆

雪崩

大量的key同时失效,间接造成大量的访问到达DB
时点性无关,使用随机过期时间
否则在零点进行大批量失效后,业务层延时零点,在数据换血后,进行访问。或者强依赖击穿方案,设置锁,获取到锁,查库,设置值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值