Redis相关问题及方案

缓存服务的相关问题

缓存预热
  • 系统刚启动时,主从数据同步压力和客户端请求压力可能使其直接宕机
    • 缓存预热即系统启动前,先将相关的热点数据直接加载到缓存系统,避免在用户请求时要先查询数据库再写入缓存。
缓存雪崩
  • 短时间内大量的数据过期,redis未命中,数据库查询压力集中爆发,数据库瘫痪,导致服务瘫痪,redis服务失效。重启系统依然无法解决。

    1. 解决途径
      • 更多使用页面静态化,减少用户请求次数
      • 构建多级缓存架构:Nginx缓存+Redis缓存+Ehcache缓存
      • MySQL耗时业务优化,数据库瓶颈排查
      • 灾难预警进制,监控redis服务器性能指标
      • 限流、降级:短时间牺牲部分用户体验,限制某些请求,降低应用服务器压力
    2. 解决方案
      • LRU与LDU切换
      • 数据有效期策略调整
        • 根据业务数据错峰调整,分批不同时效
        • 采用固定时间+短随机时间的到期时间,稀释过期数据密度(常用推荐)
      • 超热数据永久有效
      • 定期维护,对即将过期数据做数据访问量分析,维护时效性(脚本/人工)
      • 加锁(慎用)
缓存击穿
  • 某单个数据过期,而该key暴热,大量数据库请求同时向服务器查询相同数据,导致数据库瘫痪。
    • 单个不确定数据监控难度较大,需在业务数据分析和预防方面着手,配合雪崩策略
缓存穿透
  • redis大面积出现未命中现象,数据库压力变大,出现大量非正常URL访问,通常为黑客攻击
    • 对数据库中不存在的查询结果缓存null,降低重复攻击时数据库压力
    • 访问白名单策略
      • 设置对应请求id的bitmaps,简单拦截异常请求
      • 使用布隆过滤器
    • 实时监控缓存命中率与null数据的波动
    • 对数据key进行混淆加密,外部不知道加密规则,检测到非法key直接驳回请求
    • 加锁(NO)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值