Redisson 分布式锁

这篇具有很好参考价值的文章主要介绍了Redisson 分布式锁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • Redis是基础客户端库,可用于执行基本操作。

  • Redisson是基于Redis的Java客户端,提供高级功能如分布式锁、分布式集合和分布式对象。

  • Redisson提供更友好的API,支持异步和响应式编程,提供内置线程安全和失败重试机制。

实现步骤:

 <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.12.0</version>
        </dependency>

@Configuration
public class MyRedissonConfig {

    @Bean
    public RedissonClient redisson(){
        Config config = new Config();
        config.useSingleServer().setAddress("redis://192.168.127.129:6379");
        RedissonClient redissonClient = Redisson.create(config);
        return redissonClient;
    }
}

通过导入坐标和配置,注入RedissonClient对象之后,就可以通过API操作

如:获取可重入锁

@ResponseBody  //因为返回的是json数据
    @GetMapping("/hello")
    public String hello(){
        //获取一把锁  只要锁的名字一样就是通一把锁   是一个可重入的锁
        RLock myLock = redissonClient.getLock("myLock");

        /**
         *
         * 默认都是30s
         * 加锁   阻塞式等待  锁的自动续期看门狗原理(如果业务超长,会在运行期间自动给锁续上新的30秒)
         * 不要担心锁自动过期被删除
         * 加锁的业务完成,就不会续期,即使不手动解锁,锁也会在30秒之后自动解锁  所有不会有死锁问题
         */

//        myLock.lock();//阻塞式等待

        myLock.lock(10, TimeUnit.SECONDS);//获取锁之后10秒之后自动解锁  不会自动续期  自动解锁时间一定要大于业务执行事件   注意使用
        try {
            //业务代码
            System.out.println("加锁成功 执行业务。。。。"+ Thread.currentThread().getId());
            Thread.sleep(20000);
        }catch (Exception e){

        }finally {
            //解锁
            System.out.println("释放锁。。。。"+ Thread.currentThread().getId());
            myLock.unlock();
        }



        return "hello";
    }

读写锁:保证一定能读到最新数据,修改期间写锁是一个排他锁

        如果都是读,则都会同时加锁成功,可以理解为无锁

        如果先写后读,则必须等待写锁释放才行

        如果同时写,也必须等待写锁释放才行,阻塞的方式、如何

        如果先读后写,也必须等待读锁释放

写锁:是一个互斥锁

读锁:是一个共享锁,和无锁是一样的

        

@ResponseBody  //因为返回的是json数据
    @GetMapping("/read")
    public String readValue(){
        //获取读写锁
        RReadWriteLock readWriteLock = redissonClient.getReadWriteLock("rw-Lock");
        String s = "";
        RLock rLock = readWriteLock.readLock();
        rLock.lock();
        try{
            s = redisTemplate.opsForValue().get("rwLock");
        }catch (Exception e){

        }finally {
            rLock.unlock();
        }
        return s;
    }

    @ResponseBody  //因为返回的是json数据
    @GetMapping("/write")
    public String writeValue(){
        //获取读写锁
        RReadWriteLock readWriteLock = redissonClient.getReadWriteLock("rw-Lock");
        RLock rLock = readWriteLock.writeLock();
        String s = UUID.randomUUID().toString();
        try{
            rLock.lock();
            redisTemplate.opsForValue().set("rwLock", s);
            Thread.sleep(30000);
        }catch (Exception e){

        }finally {
            rLock.unlock();
        }
        return s;
    }

 信号量:典型案例车库停车等。。。。

Redisson 分布式锁,分布式

闭锁:案例放假 锁门Redisson 分布式锁,分布式 

 文章来源地址https://www.toymoban.com/news/detail-667405.html

 

到了这里,关于Redisson 分布式锁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Redisson】Redisson--分布式远程服务(Remote Service)

    Redisson系列文章: 【Redisson】Redisson–基础入门 【Redisson】Redisson–布隆(Bloom Filter)过滤器 【Redisson】Redisson–分布式锁的使用(推荐使用) 【分布式锁】Redisson分布式锁底层原理 【Redisson】Redisson–限流器 当前有两台服务器连接的是同一个Redisson中间件,这两台服务器叫它们

    2024年02月13日
    浏览(46)
  • SpringBoot+Redisson分布式锁

    org.redisson.config.Config类是Redisson框架中用于配置Redisson客户端的类。以下是一些常用的配置项: codec(编码) :默认值是org.redisson.codec.JsonJacksonCodec,用于定义与Redis交互时使用的编解码器。 useSingleServer :设置为true时,将使用单节点模式进行连接。 useMasterSlave :设置为true时,

    2024年01月19日
    浏览(47)
  • Redisson实现分布式锁示例

    可以下载redis desktop manager软件来查看redis里面存放的东西 红色框内的TTL值就是过期时间,默认-1,表示永不过期,指定过期时间后就变成你指定的值了。 上面的方法,我们让线程睡眠60S,代表我们的业务执行时间,在调用这个方法时,我们可以在 redis desktop manager软件上实时查

    2024年02月12日
    浏览(48)
  • Redisson分布式锁 原理&源码 分析

    获取锁的Lua脚本: 释放锁的Lua脚本: tryLock()底层代码分析 time :剩余的等待重试时间 ttl :现被持有的锁的剩余有效时间 计算尝试获取锁所消耗的时间,然后再计算出等待获取锁的剩余时间time, 如果time=0,则不再重试了直接返回获取锁失败, 如果time0,则通过subscribe去

    2024年02月11日
    浏览(65)
  • Redis实战——Redisson分布式锁

    目录 1 基于Redis中setnx方法的分布式锁的问题 2 Redisson         2.1 什么是Redisson         2.2 Redisson实现分布式锁快速入门         2.3 Redisson 可重入锁原理                 什么是可重入锁?                 Redisson中又是如何实现的呢?         2

    2024年02月15日
    浏览(49)
  • redis的分布式事务-redisson

    Redisson分布式锁是一种基于redis实现的分布式锁,它利用redis的setnx命令实现分布式锁的互斥访问。同时还支持锁的自动续期功能,可以避免因为某个进程崩溃或者网络故障导致锁无法释放的情况。 只要线程一加锁成功,就会启动一个watch dog看门狗,它是一个后台线程,会每隔

    2024年02月13日
    浏览(47)
  • redisson+aop实现分布式锁

    基于注解实现,一个注解搞定缓存 Aop:面向切面编程,在不改变核心代码的基础上实现扩展,有以下应用场景 ①事务 ②日志 ③controlleradvice+expetcationhandle实现全局异常 ④redissson+aop实现分布式锁 ⑤认证授权 Aop的实现存在与bean的后置处理器beanpostprocessAfterinitlazing 注解的定义仿照

    2024年01月19日
    浏览(69)
  • SpringBoot结合Redisson实现分布式锁

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:SpringBoot实战 以下是专栏部分内容,更多内容请前往专栏查看! 标题 一文带你学会使用SpringBoot+Avue实现短信通知功能

    2024年02月08日
    浏览(42)
  • Spring Boot 集成 Redisson分布式锁

            Redisson 是一种基于 Redis 的 Java 驻留集群的分布式对象和服务库,可以为我们提供丰富的分布式锁和线程安全集合的实现。在 Spring Boot 应用程序中使用 Redisson 可以方便地实现分布式应用程序的某些方面,例如分布式锁、分布式集合、分布式事件发布和订阅等。本篇

    2024年02月10日
    浏览(50)
  • 图解Redisson如何实现分布式锁、锁续约?

    使用当前(2022年12月初)最新的版本:3.18.1; 案例 案例采用redis-cluster集群的方式; redission支持4种连接redis方式,分别为单机、主从、Sentinel、Cluster 集群;在分布式锁的实现上区别在于hash槽的获取方式。 具体配置方式见Redisson的GitHub(https://github.com/redisson/redisson/wiki/2.-%E9

    2023年04月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包