zoukankan      html  css  js  c++  java
  • Java中基于redisson实现分布式锁

    使用Redisson实现加锁

    在pom文件中加入redisson依赖

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

    首选需要启动Redis,之后在启动类注入redisson。需要连接Redis服务,指定Redis密码。 代码如下:

        @Bean
        public Redisson redisson(){
            //此为单机模式
            Config config = new Config();
            config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("Ectrip2020");
            return (Redisson)Redisson.create(config);
        }

    实现代码,测试类:

        @GetMapping("/test")
        public R<String> test() {
            //创建key,锁的唯一标识
            RLock rLock = redisson.getLock("LEE");
            try {
                //指定超时时间为30s,超过这个时间范围会自动释放锁,不会造成死锁。
                rLock.lock(30, TimeUnit.SECONDS);
                String str = stringRedisTemplate.opsForValue().get("stock");
                if (str == null) {
                    stringRedisTemplate.opsForValue().set("stock", 100 + "");
                    str = stringRedisTemplate.opsForValue().get("stock");
                }
                int stock = Integer.parseInt(str);
                if (stock > 0) {
                    int realStock = stock - 1;
                    stringRedisTemplate.opsForValue().set("stock", realStock + "");
                    System.out.println("扣减成功,剩余库存为:::" + realStock);
                } else {
                    System.out.println("库存扣减失败:::" + stock);
                }
            } finally {
                //释放锁
                rLock.unlock();
            }
            return R.ok("成功!");
        }

     2021-12-03 11:29:41

  • 相关阅读:
    SecureCRT8.3
    firewalld
    yum的repo文件详解、以及epel简介、yum源的更换、常用yum命令
    Softether使用本地网桥
    nginx应用geoip模块,实现不同地区访问不同页面的需求(实践版)
    iOS开发>学无止境
    iOS开发>学无止境
    iOS开发>学无止境
    iOS开发>学无止境
    Objective-C学习- appDelegate 生命周期
  • 原文地址:https://www.cnblogs.com/Ifyou/p/15637261.html
Copyright © 2011-2022 走看看