Redis几种使用场景

                     Redis缓存预热、缓存雪崩、缓存击穿、缓存穿透

1、redis缓存预热:缓存预热就是说刚重启服务后,数据库崩溃。

       原因:服务器重新启动后缓存中是空的,用户请求数据多次未命中,只能从数据库进行查询,导致数据库压力过大,响应不及时,请求超时,导致数据库崩溃,重启等都没有效果。

      处理方案:提前将一些高热的数据添加到redis中,保证数据库服务压力适当减少等。。。。。。

2、redis缓存雪崩,缓存雪崩说的就是同一时间内大量的key过期,导致请求访问redis的时候未命中,请求又从数据库跑过去了,数据库压力大,崩了,应用服务器崩了,redis崩了,都崩了。

      原因:同时间大量的key过期导致

      处理方案:这个处理得从多方面去优化,redis中对高热数据进行延时的处理,数据库对一些慢查询,极可能出现超时的SQL进行优化处理,通过Nginx,等进行缓存多级处理,redis中没有了,请求先去看别的缓存中有没有数据,没有的话在去访问数据库,能过滤下。

3、缓存击穿、缓存击穿讲的是某一个key突然过期了,大量的请求过来未命中,都跑到数据库去,数据库崩了。

      原因:单个key过期了,例如某个女明星劈腿某个男明星,男明星在网络上爆料了一些有料照片。突然就火起来了。然后大家都点进去看,一下子诸多请求访问redis,结果redis这个key还过期了,一下数据库就崩了。

      处理方案:和雪崩差不多,但是只有单个key,处理方案也很多可以复用。

4、缓存穿透、这个一般是黑客攻击,特点是请求url不合法,大量key未命中。

      原因:大量的key未命中,key本身就不存在,数据库也不存在。

      处理:先报警,然后根据他的请求在Redis中存一下数据,时效为30-60s,一般不能超过5分钟,加白名单或者黑名单等。。

5.redis应用于限时按次计数,例如:某公司api接口每分钟只允许普通用户调用十次,超过十次则不允许调用提示升级会员。         

setex userID 60 max-次数
incr userID
当这个value值加到max时,就会报错,程序检测到这个错误就让用户升级会员。

6.redis应用于基于时间顺序的数据操作,不关注具体时间。例如微信聊天消息接收,A用户接收,BCD用于发送

发送消息顺序,BDCDC
lrem A 1 B
lpush A B
lrem A 1 D
lpush A D
lrem A 1 C
lpush A C
lrem A 1 D
lpush A D
lrem A 1 C
lpush A C
最后的顺序应该是CDB<从上到下>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值