当前位置: 首页 > 网络应用技术

Redisson分布式锁

时间:2023-03-08 01:15:12 网络应用技术

  首先,关于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以实现分布式锁