Redis系列十:常见问题解决方案

缓存预热

  • 问题:服务器启动后迅速宕机
  • 原因:1. 请求数量较高 2. 主从之间数据吞吐量较大,数据同步操作频度较高
  • 解决方案:
    1. 将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据
    2. 利用分布式多服务器同时进行数据读取,提速数据加载过程
    3. 热点数据主从同时预热

总结:缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓 存的问题!用户直接查询事先被预热的缓存数据!

缓存雪崩

  • 问题:在一个较短的时间内,缓存中较多的key集中过期,然后请求的数据在redis中未命中,此时redis需要向数据库获取数据,数据库接收大量请求无法及时处理,崩溃!重启后仍然面对无缓存可用,redis面临大量请求被积压,也崩溃了,集群崩塌瓦解,应用服务器无法响应请求,来自客户端的请求越来越多,应用服务器崩溃。
  • 原因:短时间范围内大量key集中过期
  • 解决方案:
    1.构建多级缓存:
          Nginx缓存+redis缓存
    2.MySQL严重耗时业务优化  
    3.灾难预警:
          监控redis的性能指标  
    4.限流、降级:
          短时间牺牲一些客户体验,限制一些请求
    5.LRU与LCU切换
    6.超热数据使用永久KEY
    7.定期维护,对热点数据延时

缓存击穿

  • 问题:数据库连接量瞬间激增,Redis、cup正常无波动,数据库崩溃
  • 原因:单个高热数据key过期
  • 解决方案:
    1. 预先设定 以电商为例,每个商家根据店铺等级,指定若干款主打商品,在购物节期间,加大此类信息key的过期时长 
    2. 现场调整 监控访问量,对自然流量激增的数据延长过期时间或设置为永久性key
    3. 加锁 分布式锁,防止被击穿,但是要注意也是性能瓶颈,慎重!

缓存穿透

  • 问题:1. Redis中大面积出现未命中 2. 出现非正常URL访问
  • 原因:获取的数据在数据库中也不存在,数据库查询未得到对应数据。(出现黑客攻击服务器)
  • 解决方案:
    1.设置过滤器:正常访问放行,异常数据直接拦截(效率低)
    2.设置黑名单,对IP地址进行拉黑

查看更多:Redis系列全

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值