实现分布式锁有哪些方式,redis是如何实现的

为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。
在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行,这时候会进行加锁,完成后,会进行解锁。

分布式锁的三种实现方式:
1.基于数据库实现
2.基于缓存(Redis等)实现
3.基于Zookeeper实现

(1.基于数据库实现)
1.1.sql语句里面加入method_lock
INSERT INTO method_lock (method_name, desc) VALUES (‘methodName’, ‘methodName’);
对method_name做了唯一性约束,这里如果有多个请求同时提交到数据库的话,数据库会保证只有一个操作可以成功。

1.2.乐观锁也可以实现分布式锁

2.redis实现分布式锁
SET lock_key random_value NX PX 5000
设置唯一的键值,加入NX,键不存在时,才可以对键进行设置操作,设置过期时间

值得注意的是:
random_value 是客户端生成的唯一的字符串。
NX 代表只在键不存在时,才对键进行设置操作。
PX 5000 设置键的过期时间为5000毫秒。

分布式锁之Redis实现
https://www.jianshu.com/p/47fd7f86c848
https://blog.csdn.net/wuzhiwei549/article/details/80692278

上一页:
下一页:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注