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

  • 相关阅读:
    Armbian hostname and WiFi configuration
    尼采的哲学
    深度学习 —— 使用 gensim 实现 word2vec
    sklearn preprocessing 数据预处理(OneHotEncoder)
    中英文对照 —— 饮食与美食
    matlab 常用机器学习算法的实现
    linux下svn常用指令
    Python创建删除文件
    php使用mysql和mysqli连接查询数据
    vsftpd配置文件详解
  • 原文地址:https://www.cnblogs.com/Ifyou/p/15637261.html
Copyright © 2011-2022 走看看