Redis缓存穿透、击穿、雪崩,分布式锁概述

9 篇文章 0 订阅

1、缓存穿透

        问题描述:

                       缓存命中率降低,客户端请求大量缓存中不存在的key,导致请求直接访问数据

                        库,数据库压力瞬增

        解决方案:

                        1.将key的value设置为null,并设置较短过期时间。

                        2.设置白名单:使用bitmaps类型

                        3.布隆过滤器

                        4.设置黑名单

2、缓存击穿

        问题描述:

                       缓存中热点key突然过期,导致过多请求直接访问数据库,数据库压力瞬增

        解决方案:

                        1.提前设置key的过期时间,确定其不会在频繁访问时突然过期

                        2.热点key过期后加上锁,只有缓存中重新加入该key才会打开锁

                        3.实时监控,发现热点key过期后,及时重新加入

3、缓存雪崩

        问题描述:

                       在极小时间段内,缓存中大量key突然过期,导致过多请求直接访问数据库,数据

                        库压力瞬增

        解决方案:

                        1.设置多级缓存,nginx缓存+redis缓存,在一个缓存中key大量过期后先访问

                        别的缓存。

                        2.为缓存中的key设置过期标识,在key快要过期时,及时更新过期时间。

                        3.key过期后加上锁,只有缓存中重新加入该key才会打开锁

                        4.将缓存的过期时间错开

4、分布式锁

        在分布式集群系统中,需要用分布式锁来跨越各个系统控制共享资源

        redis分布式锁:

                1.上锁

                2.具体操作

                3.释放锁:

                        (1)、比较uuid,一样才可以释放,否则可能会释放错

                         (2)、锁到了过期时间,自动释放

                4.删除操作(lua脚本保证原子性)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值