redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
最近在项目中要用到分布式锁, 这里使用的Redisson作分布式锁,这里先记录一下Redisson的可重入锁。 Redisson可重入锁 可以参考官方文档:https://github.com/redisson/redisson/wiki/8.-分布式锁和同步器 可重入锁 A调用B。AB都需要同一锁,此时可重入锁就可以重入,A就可以调用B。不可重入锁时,A调用B将死锁 编写Red...
@ApiOperation(value="测试分布式锁的可重入锁原理", notes="testRedisson02") @GetMapping("/testRedisson02")publicStringtestRedisson02()throwsInterruptedException {//1、获取锁(可重入),并指定锁的名称rLock=redissonClient.getLock("lock:testRedisson02");//2、尝试获取锁,参数分别是:waitTime:获取锁的最大...
KEYS[1]:getRawName(),加锁的 key ,比如 anyLock; ARGV[1]:unit.toMillis(leaseTime),锁的毫秒时间,比如 30000; ARGV[2]:getLockName(threadId),是 UUID 和线程 id 拼接起来的字符串,比如 931573de-903e-42fd-baa7-428ebb7eda80:1。 因为使用的是 lua 脚本,可以保证这一块 lua 脚本的原子性。 首...
原文:Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析 一、RedissonLock#lock 源码分析 1、根据锁key计算出 slot,一个slot对应的是redis集群的一个节点 redisson 支持分布式锁的功能,基本都是基于 lua 脚本来完成的,因为分布式锁肯定是具有比较复杂的判断逻辑,而lua脚本可以保证复杂判断和复杂操作...
我们再来回顾下,我们自己写的分布式锁思路:注意,是使用了Set NX EX命令的 上面这个流程,为什么锁是不可重入的呢?我们来看看下面这个图:①:执行method1方法,执行后,在②的时候,获取锁,调用了set nx ex命令。然后Redis中的key:lock value:thread1.代码继续执行,当执行到④的时候,调用了method2方法,...
Redisson单进程Redis分布式悲观锁的使用与实现 本文基于Redisson 3.7.5 1. 可重入锁(Reentrant Lock) 这种锁的使用方式和Java本身框架中的Reentrant Lock一模一样 代码语言:javascript 复制 RLock lock=redisson.getLock("testLock");try{// 1. 最常见的使用方法//lock.lock();// ...
3. redis 分布式锁的一种实现—— Redisson 的可重入锁 3.1 如何使用 Redisson 的分布式锁 写到这里,我觉得前面的文字铺垫的太多了,代码和图片太少了,但对我个人而言我觉得会使用分布式锁没有什么太大的意义,所以我前面还是坚持写了一些冗繁的废话。那么,我们先看一下如何最简单的使用 Redisson 的分布式锁吧,毕竟...
一般在分布式环境下,需要控制并发安全的地方,基本上都要用到分布式锁,所以分布式锁相关的内容以及实现原理是比较重要的,Redisson 是 Redis 中比较优秀的一个客户端工具,源码写的非常规范,值得我们学习,这里说一下Redisson 可重入锁的源码 这里Redisson 版本使用的是3.15.5,其实版本不重要,主要理解里边的加锁原理即可 ...