缓存穿透、缓存击穿、缓存雪崩

缓存穿透

什么是缓存穿透?

        是指客户端请求的数据在缓存中和数据库中都找不到,不存在,这样缓存永远不会生效,这些请求都会全部打到数据库。不断发起这样的请求,就会给数据库带来巨大压力。

解决缓存穿透的方法有哪些呢?

        1.缓存null

        2.布隆过滤

        3.加强用户权限校验

        4.做好数据的基础格式校验

        5.做好热点参数的限流

        6.增强id的复杂度,可以避免被猜测id的规律

常见解决缓存穿透的两种方法: 

        1.缓存空对象:

                优点:维护方便,实现简单。

                缺点:占用额外的内存消耗、还有可能造成短期数据的不一致。

        2.布隆过滤:

                优点:内存占用较少,不会存在多余的key 。

                缺点:存在误判的可能;实现复杂。

缓存击穿 

什么是缓存击穿?

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

常见解决缓存穿透的两种方法:

        1.互斥锁。

        2.逻辑过期。

1.互斥锁:

        优点:没有额外的内存消耗; 保证一致性; 实现简单 。

        缺点:线程需要等待,性能受影响; 还可能有死锁风险。

2.逻辑过期

        1.优点: 线程无需等待,性能较好 

        2.缺点:不保证一致性;有额外内存消耗;实现复杂。

缓存雪崩

什么是缓存雪崩?

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

解决缓存雪崩的方法:

        1.给不同的key的TTL添加随机值

        2.给业务添加多级缓存

        3.给缓存业务添加降级限流策略

        4.利用Redis集群提高服务的可用性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小白学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值