首先,关于Redisson的引入,我不会搬到这里,发布原始的GitHub地址:
由于我在此处仅使用Redisson的功能,因此它仅记录此处的锁的简单使用。
官方文件:8。分布式锁和同步器
这次使用的锁是重新输入的锁
基于Redis的Redisson分布分布可以重新输入Java对象以实现接口。在同一时间,异步接口采用异步,反射和RXJAVA2标准提供。
每个人都知道,如果redisson节点负责存储此分布式锁定,并且锁处于锁状态,则锁定似乎是锁定的。为了避免这种情况,Redisson提供了监视的锁定lock lock lock狗。它的作用是在关闭Redisson实例之前连续延长锁的有效期。默认情况下,检查的超时为30秒,您还可以通过修改config.lockwatchdogtimeout进行指定。
此外,Redisson还提供了一个参数来通过锁定来指定锁定时间。这次后,锁定自动解锁。
Redisson还提供了同时分布式锁的异步执行方法:
对象完全满足java的锁定规格,换句话说,只能解锁锁定过程,而其他过程会丢弃错误。目的。
首先,Springboot集成了Redisson,以引入Redisson依赖性:
使用Springboot:版本测试上述版本,正常使用它。
REDIS的支架版本的配置文件与原始的Springboot集成了Redis相同。
REDIS配置映射类
添加自动装配类别:
创建一个测试接口测试分布式锁:
当时,探索了战斗的日志,以更好地理解解锁和解锁机制。
将线程睡眠添加到接口,模仿程序运行职业锁。目前,您可以看到我们锁定在Redis中的钥匙:
起初,找不到钥匙。后来,我发现线程运行后,锁定自动释放,并延长了睡眠时间以在Redis中找到钥匙。
在背面的代码中,锁和锁的判断如下:
我在这里判断我使用的锁:这可以确保只有一个线程进入锁。
当您发布锁定时,添加了另一个判断:避免由于业务逻辑时间而导致锁定时间的自动释放时间。执行时,如果锁定锁定或其他线程获取锁,则当前线程释放锁会将其扔掉。
首次添加了redisson依赖性后,原始的redis配置不好,并且报告了该项目以报告上述。lastSwitch实例
请参阅Springboot通过可缓存的注释来完成REDIS缓存功能
Redisson条目可以参考:#Springboot Integration Redisson(Stand -Alone版本)
群集版本配置文件可以参考:redisson version_springboot Integration redisson(cluster版本)
起初,由于Redisson的旧版本,发现该项目启动后不久,该游戏机被抛弃了这个异常
参考技术文献:
https://www.cnblogs.com/junge8618/p/9241927.html
https://www.jiashu.com/p/a89dbefb8f74
切换Redisson版本以解决此异常。
其他参考博客:
Springboot Integrated Redisson
REDIS分布式锁定Redisson扩展程序此博客结合了AOP,以集成Redisson锁定,这是值得学习的。
锁的相关概念,理解:分布式锁,Redisson如何解决死锁的问题
redisson(1)分布式锁 - 如何解决死锁的问题
使用redisson实现分布式锁
如果您转向尽头,我建议2个通常可以理解的博客:
Spring Boot集成了Redis,以实现简单的分布式锁
Springboot集成了Redisson以实现分布式锁