阿里云文档 2023-09-03

使用SHOWMETADATALOCK语句查询持有锁的事务_云原生数据库PolarDB分布式版_云原生数据库 PolarDB(PolarDB)

本文将介绍如何在PolarDB-X上使用SHOW METADATA LOCK语句查询持有锁的事务。

文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 10:读写锁

前言Redisson 还支持可重入读写锁,允许在分布式场景下,同时有多个读锁和一个写锁处于加锁状态。使用读写锁Redisson 读写锁实现了 JUC 下的 ReadWriteLock,使用方式基本相同。网络异常,图片无法展示|源码加锁源码基本和之前的可重入锁加锁无区别,唯一的差异就是在 Lua 脚本这里。所以下面着重分析 Lua 脚本。读锁源码源码地址:org.redisson.Redisson....

Redisson 分布式锁源码 10:读写锁
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 08:MultiLock 加锁与锁释放

前言基于 Redis 的 Redisson 分布式联锁 RedissonMultiLock 对象可以将多个 RLock 对象关联为一个联锁,每个 RLock 对象实例可以来自于不同的 Redisson 实例。当然,这是官网的介绍,具体是什么?一起看看联锁 MultiLock 使用以及源码吧!MultiLock 使用网络异常,图片无法展示|按照官方文档的说法,这里 Redisson 客户端可以不是....

Redisson 分布式锁源码 08:MultiLock 加锁与锁释放
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 07:公平锁释放

前言看门狗机制是在 RedissonBaseLock#scheduleExpirationRenewal 方法中,这块公平锁和非公平锁并无区别。前文已经了解到,公平锁加锁失败之后,会将当前放到等待队列中,通过 Java 代码中的循环不断尝试获得锁。锁释放主动释放源码:RedissonFairLock#unlockInnerAsyncKEYS[1]:加锁的名字,anyLock;KEYS[2]:加锁....

Redisson 分布式锁源码 07:公平锁释放
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 06:公平锁排队加锁

前言在上一篇文章中已经分析过公平锁的加锁源码,并得出结论:Redis Hash 数据结构:存放当前锁,Redis Key 就是锁,Hash 的 field 是加锁线程,Hash 的 value 是 重入次数;Redis List 数据结构:充当线程等待队列,新的等待线程会使用 rpush 命令放在队列右边;Redis sorted set 有序集合数据结构:存放等待线程的顺序,分数 score ....

Redisson 分布式锁源码 06:公平锁排队加锁
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 05:公平锁加锁

前言默认的加锁逻辑是非公平的。在加锁失败时,线程会进入 while 循环,一直尝试获得锁,这时候是多线程进行竞争。就是说谁抢到就是谁的。Redisson 提供了 公平锁 机制,使用方式如下:RLock fairLock = redisson.getFairLock("anyLock"); // 最常见的使用方法 fairLock.lock(); 复制代码下面一起看下公平锁是如何实现的?公平锁相信....

Redisson 分布式锁源码 05:公平锁加锁
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 04:可重入锁释放

前言前面已经了解到了,可重入锁加锁,看门狗以及锁的互斥阻塞。当锁加锁成功之后,锁是如何释放的?主动释放源码入口:RedissonLock#unlock网络异常,图片无法展示|在解锁时会获取当前线程的id。一路往里跟,直接来到 RedissonLock#unlockInnerAsync:网络异常,图片无法展示|分析一下 lua 脚本的内容:网络异常,图片无法展示|如果锁不存在,直接返回 null;....

Redisson 分布式锁源码 04:可重入锁释放
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 03:可重入锁互斥

前言看过可重入锁的 Lua 脚本,已经可以知道当锁存在时,是会加锁失败的。下面看一下,加锁失败之后是如何处理的呢?加锁 Lua 脚本网络异常,图片无法展示|在 lua 脚本中,前两段 if 分别排除了两种情况:锁不存在;锁存在且是自己线程(可重入);剩下的情况就是锁存在,但是不是自己,也就意味着加锁失败。执行 pttl 命令,返回锁的剩余时间。加锁失败后的处理源码定位:org.redisson.....

Redisson 分布式锁源码 03:可重入锁互斥
文章 2022-06-13 来自:开发者社区

Redisson 分布式锁源码 01:可重入锁加锁

前言相信小伙伴都是使用分布式服务,那一定绕不开分布式服务中数据并发更新问题!单系统很容易想到 Java 的各种锁,像 synchronize、ReentrantLock 等等等,那分布式系统如何处理?当然是使用分布式锁。如果小伙伴不知道什么是分布式锁,那推荐看看石杉老师的突击课或者在网上搜一搜相关资料。当使用 Redis 作为分布式锁时,当前使用较多的框架就是 Redisson。当然 Redis....

Redisson 分布式锁源码 01:可重入锁加锁

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

阿里云分布式应用服务

企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是应用全生命周期管理和监控的一站式PaaS平台,支持部署于 Kubernetes/ECS,无侵入支持Java/Go/Python/PHP/.NetCore 等多语言应用的发布运行和服务治理 ,Java支持Spring Cloud、Apache Dubbo近五年所有版本,多语言应用一键开启Service Mesh。

+关注