立聪堂德州十三局店 发表于 2024-9-9 02:18:28

Redisson的几种锁的通俗说明

Redisson的几种锁

Redisson 提供了多种分布式锁,每种锁都有其特定的使用场景,常见的包罗:


[*]RLock(可重入锁):允许同一线程多次获取锁。
[*]RReadWriteLock(读写锁):多个线程可以同时读取数据,写使用是独占的。
[*]RSemaphore(信号量):限制同一时候可以大概访问共享资源的线程数量。
[*]RCountDownLatch(闭锁):一个或多个线程等待其它线程完成任务。
[*]RFairLock(公平锁):锁的获取顺序按照请求顺序,包管公平性。
什么是锁?

锁 就像一个确保数据安全的钥匙,防止多个线程同时访问和修改同一个资源。通过锁,线程在访问共享资源之前,必须先获取锁,其他线程只能等当前线程开释锁后才能访问。
可重入锁是什么?

可重入锁 允许同一个线程多次进入被同一把锁保护的代码块,而不会被壅闭。它确保了线程在进入锁定的代码后,如果需要再次进入其他被类似锁保护的代码,不会被锁住自己。
通俗解释:

就像你用一把钥匙进入一个房间(方法1),如果房间里有另一个上锁的小房间(方法2),你可以直接用同样的钥匙进入小房间,不用重新排队等待。可重入锁让线程可以大概顺利执行,不会在自己已经持有锁的情况下被壅闭。
Key 的概念

在锁的使用中,Key 是用来区分锁的依据。纵然多个线程在调用同一个方法,只要它们使用的数据(Key)差别,使用的锁就是独立的,不会相互干扰。
通俗解释:

假设一栋大楼有多个房间,每个房间代表差别的共享资源,而每个房间都有自己独立的锁(Key)。线程A进入房间1,线程B进入房间2,固然它们在同一栋大楼里(同一个方法),但由于它们锁定的 Key 差别,所以可以同时执使用命而不互相影响。
例子:

如果线程A使用用户1的账户(Key1),线程B使用用户2的账户(Key2),纵然这两个线程调用的是同一个账户处置惩罚方法,由于它们锁定的是差别的账户(差别的Key),它们可以同时执行,不用相互等待。
这些锁的区别大不大?通常用什么就够了?

实际上,这些锁的核心功能非常相似,它们的主要区别在于适用的场景和复杂度。


[*]RLock(可重入锁):通常是最常用、最基础的锁,适合大多数情况下的并发控制,尤其是在简单的读写、修改使用中。
[*]RReadWriteLock:适合读多写少的场景,读使用可以并发,写使用需要独占资源。
[*]RSemaphore 和 RCountDownLatch:这些锁则适用于需要限流或线程协调的特殊场景。
[*]RFairLock:适用于需要公平性的场合,避免某些线程长时间无法获取锁。
通常情况下:

RLock 足以应对大多数场景,尤其是简单的增删改查使用。如果你的场景不需要非常复杂的并发控制,RLock 就足够了。如果遇到特定需求,比如读写分离,或者需要确保公平性,可以根据实际情况选择合适的锁。
总结



[*]RLock 是最常用的锁范例,适合绝大多数常见场景。
[*]其他锁(如读写锁、信号量、闭锁等)适合特定的并发控制需求。
[*]锁的选择取决于具体的应用场景,通常情况下,使用简单的 RLock 就足够。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Redisson的几种锁的通俗说明