【Reddis】使用reddis实现分布式锁

本文探讨了在分布式系统中为何需要分布式锁,而非线程锁或进程锁,并介绍了分布式锁的基本特性和常见实现方式,重点讲解了基于Redis实现分布式锁的原理与操作流程,包括加锁和释放锁的方法,同时提及了实践中可能遇到的问题和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Why?

1.1为什么选择分布式锁,而不是其他的锁?

下面就来说一下分布式锁的由来:

线程锁
在单机系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,为了保证在同一时刻仅有一个线程执行该方法或该代码段,主要通过给方法、代码块加锁来实现。当某个方法或代码使用锁,线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronized、Lock等。

进程锁
为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。

分布式锁
此处主要是集群模式,多个相同服务同时开启。
在分布式系统中,分布式与单机情况下最大的不同在于其不是多线程而是多进程。

多线程由于可以共享堆内存,因此可以简单的采取内存作为标记存储位置。而进程之间甚至可能都不在同一台物理机上,因此需要将标记存储在一个所有进程都能看到的地方。

当在分布式模型下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻修改数据的进程数。
分布式锁也可以将标记存在内存,只不过是这个内存不再是某个进程分配的内存,而是公共内存,如zookeeper,redis,数据库等。

2. What?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗琪小姐姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值