redis分布式锁-基本概念与实现方式对比

Posted 手握太阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis分布式锁-基本概念与实现方式对比相关的知识,希望对你有一定的参考价值。

1、redis中使用WATCH实现锁机制,是最次之的方式。WATCH只会在数据被其他客户端抢先修改了的情况下,“通知”执行了这个命令的客户端,而不会阻止其他客户端对数据进行修改。此类锁成为“乐观锁”

2、redis提供SETNX命令确实具有基本的加锁功能,但他的功能并不完整,并且也不具备分布式锁常见的一些高级特性。

3、自己构建分布式锁。

4、锁不正确运行的症状

  1、持有锁的进程因为操作时间过长而导致锁自动释放,但进程本身并不知晓,甚至还可能会错误的释放了其他进程持有的锁。

  2、一个持有锁并打算执行长时间操作的进程已经崩溃,但其他想要获取锁的进程并不知道哪个进程持有锁,也无法检测出持有锁的进程是否崩溃,只能白白的浪费时间等待锁被释放

  3、在一个进程持有的锁过期之后,其他多个进程同时尝试去获取锁,并且都获得了锁。

  4、多个进程获得了同一个锁,而每个进程都以为自己是唯一获得锁的进程。

 

因为Redis在最新的硬件上可以每秒执行100 000 个操作,甚至 225 000 个操作,所以尽管上面提到的问题出现的几率只有万分之一,但在高负载的情况下还是可能出现

以上是关于redis分布式锁-基本概念与实现方式对比的主要内容,如果未能解决你的问题,请参考以下文章

Redis专题:锁的基本概念到Redis分布式锁实现

对比各类分布式锁缺陷,抓住Redis分布式锁实现命门

锁的基本概念到 Redis 分布式锁实现

原创redis库存操作,分布式锁的四种实现方式[连载一]--基于zookeeper实现分布式锁

Redis | 黑马点评 + 思维导图分布式锁

基于 Redis 实现分布式锁,分析解决锁误删情况 及 利用Lua脚本解决原子性问题并改造锁