redisson分布式锁lua脚本翻译
1.获取锁

lock入参:
keys[1]:自定义锁的key RLock lock = redissonClient.getLock(lockKey);
argv[1]=锁的租期,默认30s
argv[2]=锁的名称(UUID:threadId)
if(exists keys[1]==0 1.不存在key锁) then
hset keys[1] argv[2] 1 赋值 key field value-->1.1尝试获取锁
pexpire keys[1] argv[1] 过期 expire key time-->1.2设置锁过期时间
return 空;
end
if(hexists keys[1] argv[2]==1 存在Key name 的锁--》2.当前线程已获取锁) then
hincrby keys[1] argv[2] 1 -->2.1原子计数器+1 锁重入!!!
pexpire keys[1] argv[1] 过期-->2.2重置锁过期时间
return 空;
end
return pttl keys[1]-->3.返回剩余过期时间
ps:lua脚本数组下标从1开始
2.释放锁

unlock入参:
keys[1]:自定义锁的key RLock lock = redissonClient.getLock(lockKey);
keys[2]:通道名称 redisson_lock__channel:{UUID:threadId}
argv[1]= publish unlock消息=0
argv[2]=锁的租期,默认30s
argv[3]=锁的名称(UUID:threadId)
if(hexists keys[1] argv[3]==0-->1.不存在key锁,直接返回) then
return 空
counter=hincrby keys[1] argv[3] -1-->2.存在锁,原子计数器-1
if(counter>0) then pexpire KEYS[1] ARGV[2]-->2.1 计数器>0,还有锁没释放,重置锁过期时间
return 0;
else -->2.2计数器=0,锁已经全部释放完毕。
del KEYS[1]-->删除key
publish KEYS[2] ARGV[1]-->发布消息 publish channel message
return 1;
end
return 空;
redisson分布式锁lua脚本翻译的更多相关文章
- Redisson 分布式锁实现之前置篇 → Redis 的发布/订阅 与 Lua
开心一刻 我找了个女朋友,挺丑的那一种,她也知道自己丑,平常都不好意思和我一块出门 昨晚,我带她逛超市,听到有两个人在我们背后小声嘀咕:"看咱前面,想不到这么丑都有人要." 女朋友 ...
- Redisson分布式锁实现
转: Redisson分布式锁实现 2018年09月07日 15:30:32 校长我错了 阅读数:3303 转:分布式锁和Redisson实现 概述 分布式系统有一个著名的理论CAP,指在一个分布 ...
- Redisson 分布式锁实战与 watch dog 机制解读
Redisson 分布式锁实战与 watch dog 机制解读 目录 Redisson 分布式锁实战与 watch dog 机制解读 背景 普通的 Redis 分布式锁的缺陷 Redisson 提供的 ...
- 又长又细,万字长文带你解读Redisson分布式锁的源码
前言 上一篇文章写了Redis分布式锁的原理和缺陷,觉得有些不过瘾,只是简单的介绍了下Redisson这个框架,具体的原理什么的还没说过呢.趁年前项目忙的差不多了,反正闲着也是闲着,不如把Rediss ...
- Redisson 分布式锁源码 02:看门狗
前言 说起 Redisson,比较耳熟能详的就是这个看门狗(Watchdog)机制. 本文就一起看看加锁成功之后的看门狗(Watchdog)是如何实现的? 加锁成功 在前一篇文章中介绍了可重入锁加锁的 ...
- Redisson 分布式锁实现之源码篇 → 为什么推荐用 Redisson 客户端
开心一刻 一男人站在楼顶准备跳楼,楼下有个劝解员拿个喇叭准备劝解 劝解员:兄弟,别跳 跳楼人:我不想活了 劝解员:你想想你媳妇 跳楼人:媳妇跟人跑了 劝解员:你还有兄弟 跳楼人:就是跟我兄弟跑的 劝解 ...
- Redisson 分布式锁源码 09:RedLock 红锁的故事
前言 RedLock 红锁,是分布式锁中必须要了解的一个概念. 所以本文会先介绍什么是 RedLock,当大家对 RedLock 有一个基本的了解.然后再看 Redisson 中是如何实现 RedLo ...
- Redisson 分布式锁源码 11:Semaphore 和 CountDownLatch
前言 Redisson 除了提供了分布式锁之外,还额外提供了同步组件,Semaphore 和 CountDownLatch. Semaphore 意思就是在分布式场景下,只有 3 个凭证,也就意味着同 ...
- Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析
原文:Redisson分布式锁学习总结:可重入锁 RedissonLock#lock 获取锁源码分析 一.RedissonLock#lock 源码分析 1.根据锁key计算出 slot,一个slot对 ...
- redisson分布式锁原理剖析
redisson分布式锁原理剖析 相信使用过redis的,或者正在做分布式开发的童鞋都知道redisson组件,它的功能很多,但我们使用最频繁的应该还是它的分布式锁功能,少量的代码,却实现了加锁. ...
随机推荐
- 各大安卓模拟器的adb端口和使用对比
在手游开发中,经常会使用模拟器来进行adb调试,本文列出了市面上主流模拟器的adb端口和使用对比. 模拟器ADB端口 市面上常见的模拟器连接ADB的端口列表: 网易MuMu模拟器 7555 夜神安卓模 ...
- logstash 与ElasticSearch:从CSV文件到搜索宝库的导入指南
logstash 与ElasticSearch:从CSV文件到搜索宝库的导入指南 使用 logstash 导入数据到 ES 时,由三个步骤组成:input.filter.output.整个导入过程可视 ...
- 3.3 DLL注入:突破会话0强力注入
Session是Windows系统的一个安全特性,该特性引入了针对用户体验提高的安全机制,即拆分Session 0和用户会话,这种拆分Session 0和Session 1的机制对于提高安全性非常有用 ...
- 5.11 汇编语言:仿写IF条件语句
条件语句,也称为IF-ELSE语句,是计算机编程中的一种基本控制结构.它允许程序根据条件的真假来执行不同的代码块.条件语句在处理决策和分支逻辑时非常有用.一般来说,条件语句由IF关键字.一个条件表达式 ...
- 进程锁(互斥锁)(Python)
3:# 抢票示例 import json import time from multiprocessing import Process,Lock def search(i): with open(' ...
- 【C语言深度解剖】复数运算问题--【好题系列】学会这题,结构体没问题
复数问题 今天博主给大家带来一道博主自己在学校做到的一个题目.这个题目可以很好的加深我们对C语言结构体的理解,在这里分享给大家.学懂这题,我们的C语言结构体,没问题了! 本篇建议收藏后食用!以免退出找 ...
- 使用DoraCloud免费版搭建办公桌面云
DoraCloud是一款多平台的桌面虚拟化管理软件,支持Hyper-V.VMware.Proxmox.XenServer等多种虚拟化平台.DoraCloud在虚拟化平台上具有极大的灵活性,允许您的组织 ...
- 私有化部署chatGPT,告别网络困扰
最近的chatGPT是热火朝天,基本人手一个.工具用的好,工作5分钟,划水一整天. 不过最近ChatGPT的访问越来越限制了,访问官网都有网络的问题,今天小卷给大家介绍一个方案,私人独享属于自己的ch ...
- 借助Rich库实现Pandas DataFrame颜值升级
pandas的DataFrame功能强大自不必说,它可以帮助我们极大的提高统计分析的效率. 不过,使用DataFrame开发我们的分析程序的时候,经常需要打印出DataFrame的内容,以验证和调试数 ...
- Pandas字符串离散化处理
字符串离散化处理 import pandas as pd import numpy as np from matplotlib import pyplot as plt # 读取csv文件 file_ ...