黑色星期五之夜描边版(Friday Night Funkin)
172.00M · 2025-09-13
文章内容收录到个人网站,方便阅读:hardyfish.top/
Redisson 支持公平锁,实现类为:
RLock lock = redisson.getFairLock("myLock");
公平锁表示: 多个线程在获取锁时,按照请求锁的先后顺序来获取锁,先申请锁的线程,先获得锁。
Redisson 的公平锁(Fair Lock)底层是基于 Redis数据结构(ZSet + List) 实现的,和普通锁(RLock)实现有差异:
Redisson 公平锁会用两个关键的 Redis 数据结构:
List
:队列,保存等待中的线程。ZSet
:有序集合,保存线程等待锁的时间戳,用于排序,确保先请求锁的线程优先获得锁。当线程请求公平锁时:
尝试获取锁
进入等待队列
释放锁
例如:
# 公平锁的Key名假设为 myLock
myLock:threadQueue (List结构)
myLock:timeout (ZSet结构)
List:
myLock:threadQueue = [threadA_UUID, threadB_UUID, threadC_UUID]
ZSet:
myLock:timeout = {
threadA_UUID : 1700000000001, # 请求时间戳
threadB_UUID : 1700000000100,
threadC_UUID : 1700000000200
}
threadQueue
中的第一个元素threadA_UUID
,唤醒对应线程继续获取锁。RLock
实现)。RLock fairLock = redisson.getFairLock("myFairLock");
try {
fairLock.lock();
// 业务逻辑...
} finally {
fairLock.unlock();
}
Redisson的公平锁:
172.00M · 2025-09-13
848.56M · 2025-09-13
162.30M · 2025-09-13
遏制网站用隐藏图片追踪用户,谷歌 Chrome 浏览器 142 Canary 无痕模式增强隐私保护
CodeGenie 的 AI 辅助调优让你问题定位效率大幅提升