java代码使用红锁实现加锁

news/2025/2/22 22:45:44/文章来源:https://www.cnblogs.com/zhf123/p/18731569

为什么使用红锁?

依赖红锁解决节点间数据同步不一致的问题。
也可以解决集群中的多个机器获取同一把锁,实现分布式锁的功能。
可以在程序没有执行完成的情况下实现锁的续期,实现看门狗机制。
 代码实现案例:
    // 红锁@Bean("redissonClient1")public RedissonClient redissonClient1(){Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6379").setDatabase(0);return Redisson.create(config);}@Bean("redissonClient2")public RedissonClient redissonClient2(){Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6380").setDatabase(0);return Redisson.create(config);}@Bean("redissonClient3")public RedissonClient redissonClient3(){Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6381").setDatabase(0);return Redisson.create(config);}@Bean("redissonClient4")public RedissonClient redissonClient4(){Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6382").setDatabase(0);return Redisson.create(config);}@Bean("redissonClient5")public RedissonClient redissonClient5(){Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6383").setDatabase(0);return Redisson.create(config);}// 红锁
    @AutowiredOrderInfoService orderInfoService;@Autowired@Qualifier("redissonClient1")RedissonClient redissonClient1;@Autowired@Qualifier("redissonClient2")RedissonClient redissonClient2;@Autowired@Qualifier("redissonClient3")RedissonClient redissonClient3;@Autowired@Qualifier("redissonClient4")RedissonClient redissonClient4;@Autowired@Qualifier("redissonClient5")RedissonClient redissonClient5;@Overridepublic ResponseResult grab(DriverGrabRequest driverGrabRequest) {String orderId = driverGrabRequest.getOrderId()+"";String key = orderId;// 红锁RLock rLock1 = redissonClient1.getLock(key);RLock rLock2 = redissonClient2.getLock(key);RLock rLock3 = redissonClient3.getLock(key);RLock rlock4 = redissonClient4.getLock(key);RLock rlock5 = redissonClient5.getLock(key);RedissonRedLock lock = new RedissonRedLock(rLock1, rLock2, rLock3, rlock4, rlock5);lock.lock();System.out.println("开始锁redis redisson cluster yaml");try {TimeUnit.SECONDS.sleep(40);} catch (InterruptedException e) {e.printStackTrace();}ResponseResult grab = orderInfoService.grab(driverGrabRequest);System.out.println("结束锁redis redisson cluster yaml");lock.unlock();return grab;}

 

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

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

相关文章

软件开发与创新课程设计第一次作业---小游戏《勇者冒险》改写

《勇者冒险》小游戏代码优化 一、项目名称与来源 题目为《勇者冒险》(原项目没有名字,是作者取的),代码来源是CSDN,链接如下: https://blog.csdn.net/zjx120307/article/details/126221342?sharetype=blog&shareId=126221342&sharerefer=APP&sharefrom=qq 本…

多周期处理器debug记录

这篇随笔记录的是从普通的多周期处理器到加入握手信号和axi-lite协议sram的处理器。 在之前的多周期处理器里,由于结构比较简单,所以我给ifu和exu的握手信号加入的是时序逻辑,idu由于只做解码,所以握手信号放在了组合逻辑里,差不多就和透传差不多。但是加入sram握手信号以…

继承内存图--java进阶 day01

主方法进栈,有new进堆堆内存中先存自己类中有的变量又因为继承了父类,所以父类中的变量也要存入 即使被私有化,依旧可以继承,只是没有权限使用!创建对象时,会调用构造方法,所以走构造方法,实参传形参.....继续走到super,访问父类的构造方法,父类构造方法进栈,形参继…

离散化学习笔记

离散化学习笔记 OP:又是一如既往的周更。。。水死了 定义离散化:将数字映射为是第几小的数,其保证数据在Hash之后仍然保持原来的全/偏序关系,能够解决:通过元素相对大小即可解决的问题。 其实本质上就是哈希的一种特殊规则而已。(离散化简化了不止亿点)目标将一堆乱序且…

java知识面试day2

1.说出java和c++的区别java是一个纯粹的面向对象语言,所有的对象都继承于java. lang.Object,C++兼容C,不但支持面向对象也支持面向过程 java有着一次编译四处运行的跨平台特性。 java不具有指针,但具有垃圾回收。 java不支持多重继承,只能通过实现多个接口去达到相同目的2.…

继承中构造方法访问特点--java 进阶day01

1.子类不可以继承父类的构造方法构造方法的名称必须与类名一致,上图中类名是Zi,而构造方法名是Fu,肯定不行 2.子类在初始化之前,需要对父类初始化 子类在初始化的过程中,很有可能会调用到父类的数据,如果父类没有提前初始化,子类就无法调用这些数据3.通过在子类中访问父…

Mysql莫名其妙爆出拒绝访问问题的原因及解决方案

本文记录使用Mysql作为数据库时发生拒绝访问问题的解决方案Mysql出现拒绝连接问题 ⛄问题原因 : Mysql密码错误,本机上并不是只有一个Mysql服务,我们在开机时启动了并非以前使用的那个Mysql服务,所以造成了密码的错误🌟解决方案 :手动关闭当前正在启用的Mysql服务,尝试找…

Codes 开源 免费 研发项目管理平台 3.0.0 版本发布及创新的轻IPD实现

Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过创新的方式简化研发协同工作,使敏捷开发更易于实施。采用轻量化的 IPD 模式实现,且融合了敏捷 。轻 IPD 主要解决多项目交付的研发过程管理,…

2025/2/15课堂记录

数字转换,皇宫看守,树上dp,树的直径目录数字转换 皇宫看守数字转换这是一道树的直径题。 首先,树的直径定义是:树上两个结点之间的最短(加权)路中最长的一条路径(和二分答案没关) 但由于贪心思想,这个路径一定起点终点是两片叶子结点如图,这棵树的直径就是5,即节点…

基于CPS-SPWM链式STATCOM系统在电压不平衡环境下控制策略的simulink建模与仿真

1.课题概述基于CPS-SPWM链式STATCOM系统在电压不平衡环境下控制策略的simulink建模与仿真。利用电压外环PI调节器得到有功 电流指令值结合由负载侧电流检测 到 的无功 电流指令值 ,经由 状态解耦PI调节的电流内环控制器输出直接得到的是输出电压的指令值,用此信号作为采用控制…

【库】Coravel Schedule任务调度

Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。   下面是简单的用法,通过注入Scheduler和在中间件中定义调度的实现,来完成简单的…