举几个栗子来侃一侃缓存穿透、缓存击穿、缓存雪崩区别

结合我们通常的业务场景来分析下redis的几个缓存的问题。

我们是如何使用redis来做分布式缓存

不喜欢多说,直接上图
在这里插入图片描述

缓存穿透、缓存击穿、缓存雪崩区别和解决方案

我比较喜欢表格的方式来表达区别,比较一目了然,请看

类别/区别问题描述数据场景举例解决方案
缓存穿透缓存穿透是指redis缓存数据库都没有的数据,而用户不断发起请求,如发起为id为数据库不存在的数据。这时的用户请求很可能是攻击请求,导致数据库压力过大。1、缓存没有 2、数据库没有 3、多为恶意请求栗子来一个,一个爬虫不停的通过特定接口http://example_url?param=value来爬取我们系统的数据可能它不知道我们的具体的value是多少,所以只能暴力的通过轮询大量未知的value来请求我们的接口接口层增加校验,对于明显不合法的参数进行拦截,例如 id做校验,id<0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
缓存击穿缓存击穿是指缓存中没有数据库中有的数据,
这可能是缓存时间到期,这时如果并发用户特别多,
同时读缓存没读到数据,又同时去数据库去取数据,
引起数据库压力瞬间增大
1、缓存没有2、数据有3、并发量大 4、针对一条数据举起一个栗子,早年12306刚上线,我们春节抢票,假如开票时间是早上8点,上亿的人摩拳擦掌,8点一到我们期待的7300次绿皮车上架了,键盘侠们一顿狂点,这时候缓存还没数据,一下子都去查数据库了1、预加载数据到内存 2、对于加载数据到内存的操作加锁
缓存雪崩缓存雪崩是指缓存中数据大批量超时失效
这时候如果查询数据量巨大,会导致数据库压力
瞬间增大甚至宕机崩溃。和缓存击穿不同的是,
缓存击穿指并发查同一条数据,缓存雪崩是不同数据
都过期了,很多数据都查不到从而查数据库。
1、缓存没有2、数据库有 3、并发量大 4、只对大批量的数据同栗子二,大量地区的大量车次1、随机设置缓存数据的到期时间 2、预加载数据 3、缓存分布式部署,将数据均匀分布在不同缓存中 4、设置热点数据永远不过期或者过期时间尽量为闲时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值