【坑】分布式锁之误 “解锁”(Redis为例)

Redis客户端误“解锁”

分布式锁就那点事

分布式场景要求“锁”在某个公共的地方

在单机场景中,为了同步多线程对同一份数据的操作,我们可以利用编程语言自带的工具来构建锁。如,Java 的 synchronized 关键字、ReentrantLock 类等。对于同一服务器上的多个进程,我们可以使用操作系统级别的“锁”来实现同步。如,C# 中以 “Global\” 开头作为 Mutex 的 Name。

在分布式场景中,有多个实例(线程或进程)分布在多个服务器上,我们就需要将“锁”放在这些某个公共的地方,让这些实例都能访问。之前单机场景中,那种只能服务器本地访问的“锁”方案就无法满足这类场景了。

对于使用 “分布式锁” 的客户端来说,它们只关心 “获取锁” 和 “释放锁”。所以 “分布式” 对它们而言,主要指这些客户端是分布在多个服务器上的。

对于实现 “分布式锁” 的服务端来说,“分布式” 往往意味着有多个分布在不同服务器上的实例进行合作,对外提供统一的 “分布式锁” 服务。在客户端眼里,这些服务端实例是一个整体的黑盒;客户端无需了解这些服务实例之间如何协作的细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值