查看: 31|回复: 0

[.NET 新手区] Redis实现分布式锁的正确姿势

[复制链接]
  • TA的每日心情
    难过
    2016-3-1 09:50
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2020-2-9 12:48:10 | 显示全部楼层 |阅读模式
     刚刚介绍完了错误的姿势后,从上面错误姿势中,我们可以知道,要使用Redis实现分布式锁。加锁操作的正确姿势为:
    • 使用setnx命令保证互斥性
    • 需要设置锁的过期时间,避免死锁
    • setnx和设置过期时间需要保持原子性,避免在设置setnx成功之后在设置过期时间客户端崩溃导致死锁
    • 加锁的Value 值为一个唯一标示。可以采用UUID作为唯一标示。加锁成功后需要把唯一标示返回给客户端来用来客户端进行解锁操作
      解锁的正确姿势为:
      1. 需要拿加锁成功的唯一标示要进行解锁,从而保证加锁和解锁的是同一个客户端
      2. 解锁操作需要比较唯一标示是否相等,相等再执行删除操作。这2个操作可以采用Lua脚本方式使2个命令的原子性。

    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2020 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表