• Redisson分布式锁


    1.添加pom依赖

            <!--redisson-->
            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson</artifactId>
                <version>3.11.6</version>
            </dependency>

    2.Redis配置文件

    #系统配置,已省略其他无关配置参数
    spring:
      redis:
        host: 192.168.0.167
        port: 6379
        password: helloworld

    3.启动类配置Redisson

        /** 地址 **/
        @Value("${spring.redis.host}")
        private String host;
        /** 接口 **/
        @Value("${spring.redis.port}")
        private String port;
        /** 密码 **/
        @Value("${spring.redis.password}")
        private String password;
        /** redis数据库 **/
        private int database = 1;
        @Bean
        public Redisson redisson() {
            // 单机模式
            Config config = new Config();
            config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password).setDatabase(database);
            return (Redisson) Redisson.create(config);
        }

    4.具体实现

    public JsonResult createOrder(Map map) {
            //  锁key
            String key = "payOnline";
            //  是否加锁成功
            boolean res = false;
            //  设置锁
            RLock lock = redisson.getLock(key);
            try {
                //  加锁。成功true,失败false
                //  3秒加锁等待时间,若3秒内无法加锁,则返回false
                //  10秒后自动释放锁,若10秒内业务逻辑未执行完,通过内部监控自动续时,每次续时约1/3的自动释放锁时间,默认最多续时30秒
                res = lock.tryLock(3, 10, TimeUnit.SECONDS);
                if (res) {
                    //  执行业务代码
                    return new JsonResult(payOnline(map));
                } else {
                    return JsonResult.fail("您的网络不稳定,请稍后重试。");
                }
            } catch (Exception e) {
                return JsonResult.fail("您的网络不稳定,请稍后重试。");
            } finally {
                if (res) { //  释放锁
                    lock.unlock();
                }
            }
        }

     

  • 相关阅读:
    koa mog
    sdl
    基于WindowImplBase 更简单 以及 可变大小的,才是标准的
    df
    ffplay vc
    开源1bo
    react学习前一部分
    0514 react路由
    nodejs 调用进程
    Ubuntu Linux, 不要弄什么 wine,龙井 或者什么等 QQ 了。
  • 原文地址:https://www.cnblogs.com/shiblog/p/12020092.html
Copyright © 2020-2023  润新知