Advertisement

深入解析分布式锁的设计与实现

阅读量:

I. 分布式锁

分布式锁的主要功能是:在分布式系统中多线程运行时实现互斥访问

参考单机的锁特点来说,我们实现的分布式锁需要拥有以下特性:

  • 互斥性
  • 不发生死锁
  • 正确释放锁
  • 高性能
  • 高可用

最好还能支持:

  • 可重入
  • 阻塞获取/超时获取/中断获取
  • 公平/非公平

II. Redis分布式锁

Redis 获取分布式锁的主要方式是通过 setnx 命令来实现功能。该命令的主要作用是:当该 key 存在时会尝试进行设置操作并导致 set 失败并返回值为 0;而当 key 不存在则会成功执行设置操作并返回值为 1。

单机Redis分布式锁实现

Redis分布式锁的设计重点体现在获取互斥锁、释放互斥锁以及防范死锁三个方面,在设计一个互斥 lock 工具支持的功能时可参考的8个要点如下:Redis分布式互斥锁的实现方案中获取互斥 lock 主要依赖于setnx命令来完成锁定操作,在完成锁定后可通过清除对应键值来解除锁定状态。为了避免可能出现的死 lock 情况,则应通过让键值自动失效的方式来保证系统的安全性。

目前看到其他的文章主要的实现方式以下几种:

分布式锁看这篇就够了

全部评论 (0)

还没有任何评论哟~