Loading

摘要: 加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢? 阅读全文
posted @ 2021-07-21 16:06 程序员小航 阅读(274) 评论(4) 推荐(0) 编辑
摘要: 一般工作中常用的分布式锁,就是基于 Redis 和 ZooKeeper,前面已经介绍完了 Redisson 锁相关的源码,下面一起看看基于 ZooKeeper 的锁。也就是 Curator 这个框架。 阅读全文
posted @ 2021-07-16 10:19 程序员小航 阅读(478) 评论(0) 推荐(0) 编辑
摘要: Redisson 除了提供了分布式锁之外,还额外提供了同步组件,Semaphore 和 CountDownLatch。 阅读全文
posted @ 2021-07-15 15:04 程序员小航 阅读(426) 评论(0) 推荐(1) 编辑
摘要: RedLock 红锁,是分布式锁中必须要了解的一个概念。 所以本文会先介绍什么是 RedLock,当大家对 RedLock 有一个基本的了解。然后再看 Redisson 中是如何实现 RedLock 的。 阅读全文
posted @ 2021-07-12 18:42 程序员小航 阅读(1590) 评论(3) 推荐(4) 编辑
摘要: 前言 基于 Redis 的 Redisson 分布式联锁 RedissonMultiLock 对象可以将多个 RLock 对象关联为一个联锁,每个 RLock 对象实例可以来自于不同的 Redisson 实例。 当然,这是官网的介绍,具体是什么?一起看看联锁 MultiLock 使用以及源码吧! M 阅读全文
posted @ 2021-07-10 10:02 程序员小航 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 前言 看门狗机制是在 RedissonBaseLock#scheduleExpirationRenewal 方法中,这块公平锁和非公平锁并无区别。 前文已经了解到,公平锁加锁失败之后,会将当前放到等待队列中,通过 Java 代码中的循环不断尝试获得锁。 锁释放 主动释放 源码:RedissonFai 阅读全文
posted @ 2021-07-09 10:01 程序员小航 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 前言 在上一篇文章中已经分析过公平锁的加锁源码,并得出结论: Redis Hash 数据结构:存放当前锁,Redis Key 就是锁,Hash 的 field 是加锁线程,Hash 的 value 是 重入次数; Redis List 数据结构:充当线程等待队列,新的等待线程会使用 rpush 命令 阅读全文
posted @ 2021-07-08 10:02 程序员小航 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 前言 默认的加锁逻辑是非公平的。 在加锁失败时,线程会进入 while 循环,一直尝试获得锁,这时候是多线程进行竞争。就是说谁抢到就是谁的。 Redisson 提供了 公平锁 机制,使用方式如下: RLock fairLock = redisson.getFairLock("anyLock"); / 阅读全文
posted @ 2021-07-07 08:12 程序员小航 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 前言 前面已经了解到了,可重入锁加锁,看门狗以及锁的互斥阻塞。 当锁加锁成功之后,锁是如何释放的? 主动释放 源码入口:RedissonLock#unlock 在解锁时会获取当前线程的id。 一路往里跟,直接来到 RedissonLock#unlockInnerAsync: 分析一下 lua 脚本的 阅读全文
posted @ 2021-07-05 11:07 程序员小航 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 看过可重入锁的 Lua 脚本,已经可以知道当锁存在时,是会加锁失败的。 下面看一下,加锁失败之后是如何处理的呢? 阅读全文
posted @ 2021-07-05 08:09 程序员小航 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 说起 Redisson,比较耳熟能详的就是这个看门狗(Watchdog)机制。 本文就一起看看加锁成功之后的看门狗(Watchdog)是如何实现的? 阅读全文
posted @ 2021-07-03 16:24 程序员小航 阅读(1019) 评论(0) 推荐(1) 编辑
摘要: 使用分布式服务,那一定绕不开分布式服务中数据并发更新问题! 单系统很容易想到 Java 的各种锁,像 synchronize、ReentrantLock 等等等,那分布式系统如何处理? 阅读全文
posted @ 2021-07-02 08:23 程序员小航 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 相信小伙伴一定用过 @Transaction 注解,那 @Transaction 背后的秘密又知道多少呢? Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的呢? 阅读全文
posted @ 2021-06-25 10:43 程序员小航 阅读(800) 评论(5) 推荐(1) 编辑
摘要: 写什么接口文档,快来看看这个 IDEA 插件,一键生成 Markdown 文档,直接上传 YApi! 阅读全文
posted @ 2021-06-17 16:15 程序员小航 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 三篇文章分别通过实际操作,介绍了主键、非主键唯一索引、普通索引、普通字段四个方面介绍了加锁的范围。 阅读全文
posted @ 2021-06-08 10:38 程序员小航 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 实操验证 MySQL 普通索引和无索引加锁的范围 阅读全文
posted @ 2021-06-06 11:51 程序员小航 阅读(1158) 评论(0) 推荐(0) 编辑
摘要: 实操验证 MySQL 的 next-key 的 bug 在非主键唯一索引上还是存在的! 阅读全文
posted @ 2021-06-06 11:50 程序员小航 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 实操验证MySQL 主键索引加锁的时候锁范围是什么? 阅读全文
posted @ 2021-06-06 11:48 程序员小航 阅读(1278) 评论(0) 推荐(1) 编辑
摘要: 作为开发,在本机捣鼓一下 Docker 还是很有必要的,本篇文章介绍如何使用 Docker 安装 MySQL,并在终端(iTerm2)使用命令连接 MySQL。 阅读全文
posted @ 2021-06-06 11:47 程序员小航 阅读(744) 评论(0) 推荐(0) 编辑
摘要: 记录一下自己用的 Mac 软件,如果小伙伴需要,可以下载体验一下 阅读全文
posted @ 2021-05-24 15:01 程序员小航 阅读(1194) 评论(2) 推荐(0) 编辑