Redis缓存问题

缓存穿透

缓存穿透就是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。

解决方案: 

  • 缓存空对象
    优点:实现简单,维护方便。
    缺点:1.额外的内存消耗
               2.可能造成短期的不一致
  • 布隆过滤
    优点:内存占用较少,没有多余key
    缺点:1.实现复杂
               2.存在误判的可能

缓存雪崩

缓存雪崩是指在同一时间段大量的缓存key同时失效或者Redis服务宕机,导致大量的请求到达数据库,带来巨大压力

解决方案

  • 给不同得key的TTL添加随机值
  • 利用Redis集群提高服务的可用性
  • 给缓存业务添加降级限流策略
  • 给业务添加多级缓存

缓存击穿

缓存击穿问题也叫热点key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。

解决方案:

  • 互斥锁
    优点:1.没有额外的内存消耗
               2.保证一致性
               3.实现简单
    缺点:1.线程需要等待,性能受影响
               2.可能有死锁的风险
  • 逻辑过期
    优点:线程无需等待,性能较好。
    缺点:1.不保证一致性
               2.有额外内存小号
               3.实现复杂

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值