Redis分布式锁

本文详细介绍了Redis分布式锁的实现方式,包括利用SETNX命令实现互斥锁,以及如何通过设置过期时间避免死锁。同时,讨论了锁过期时间评估不准和锁被错误释放的问题,提出了使用Redisson的自动续期机制和Lua脚本来确保原子性操作,以提高分布式锁的安全性和可靠性。
摘要由CSDN通过智能技术生成

一,Redis分布式锁的实现

           想要实现一个分布式锁,必须要求 Redis 有有互斥的能力, 我们可以使用SETNX命令,SETNX是是set if not exists 的缩写,也就是只有不存在的时候才设置, 设置成功时返回 1 , 设置失败时返回 0 。可以利用它来实现锁的效果。

        两个客户端可以执行这个命令,达到互斥。就可以实现一个分布式锁。

        客户端1申请加锁,加锁成功。

 客户端 2 申请加锁,因为后到达,加锁失败:

 此时加锁成功的客户端,就可以去操作共享资源了。例如操作数据库中的一行数据,或者调用一个API请求。

操作完成后,还要及时的释放锁,给后来者让出操作公共资源的机会,那如何释放锁呢?

也很简单,用DEL这个命令就可以删除这个key即可;

 这个逻辑很简单,就是加锁->操作共享资源->释放锁的一个过程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值