Spring Boot 整合Redisson_redisson-spring-data-xx来适配spring的版本-程序员宅基地

技术标签: spring  spring boot  java  分布式锁  redisson  

版本说明

spring-boot: 2.3.5.RELEASE
redisson: 3.16.2

引入依赖

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.16.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-actuator</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

在resources下新建redisson.yaml配置文件(单机模式)

参照官网说明: https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95#21-%E7%A8%8B%E5%BA%8F%E5%8C%96%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95
在这里插入图片描述

编写配置类

package com.example.demo.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.spring.data.connection.RedissonConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;

import java.io.IOException;

/**
 * @author xxf
 * @class Redisson
 * @date 2021/9/14 15:19
 */
@Configuration
public class RedissonSpringDataConfig {
    

    @Bean
    public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
    
        return new RedissonConnectionFactory(redisson);
    }

    /**
     * @description redisson配置
     * @author xxf
     * @date 2021/9/15 10:52
     * @param configFile
     * @return
     */
    @Bean(destroyMethod = "shutdown")
    public RedissonClient redisson(@Value("classpath:/redisson.yaml") Resource configFile) throws IOException {
    
        Config config = Config.fromYAML(configFile.getInputStream());
        //测试看门狗(默认30s)
        config.setLockWatchdogTimeout(50000);
        String s = config.toYAML();
        System.out.println(s);
        return Redisson.create(config);
    }

}

编写测试类

package com.example.demo.controller;

import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * @author xxf
 * @class RedissonTestController
 * @date 2021/9/14 13:24
 */
@RestController
public class RedissonTestController {
    

    @Autowired
    private RedissonClient redissonClient;

    private static String KEY = "mykey";

    @GetMapping("/testRedisson")
    public String testRedisson() {
    
        RLock lock = redissonClient.getLock(KEY);
        //判断是否有任务在执行
        if (lock.isLocked()) {
    
            System.out.println(System.currentTimeMillis() + "任务已被锁定,稍后再试");
            return "fail";
        }
        try {
    
            lock.lock();
            System.out.println("执行任务中...");
            //执行20s
            Thread.sleep(20000);
            System.out.println("任务完成");
        } catch (Exception e) {
    
            System.out.println("获取锁异常");
        } finally {
    
            //释放锁
            lock.unlock();
        }

        return "ok";
    }
}

启动项目测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28014809/article/details/120304422

智能推荐

从事汽车电子软件开发需要什么技能?_汽车mcu开发怎么入门-程序员宅基地

文章浏览阅读6.6k次,点赞8次,收藏90次。​前不久有一个朋友想转去做汽车软件开发,问我需要学习什么内容。今天在这里做一个分享,希望可以帮到这位朋友以及以后想要从事汽车电子软件开发的朋友们。随着SDV(软件定义汽车)概念的提出, 大家都认识到了软件在汽车电子领域的重要性,各大汽车主机厂纷纷成立了软件研发中心并争夺软件开发人才。上汽集团在今年年初成立了上汽软件中心(后改名为零束),长城汽车成立了诺博、诺创、诺博,还有很多OEM也成立或者扩大了各自的软件研发中心,这里都不赘述了。总之,这对从事汽车软件开发的同僚们是很大的利好。2019年大家经历了汽车_汽车mcu开发怎么入门

数学建模灵敏性分析(一阶、二阶灵敏度)python代码+懒人专用版_计算一阶sobol敏感性指数 python-程序员宅基地

文章浏览阅读9.2k次,点赞21次,收藏207次。对于勉强看懂了灵敏度分析的同学来说,本文给出一个方便移植、修改的python程序,可以很方便地进行灵敏度分析。_计算一阶sobol敏感性指数 python

怎样HTML做图片画廊,42个jQuery图片画廊插件-程序员宅基地

文章浏览阅读732次。这里列出了使用jQuery构建的42个jQuery图像库、滑块、插件和教程:1. TN3 GalleryTN3 Gallery是一个完整的基于HTML的可定制的图像库,包含幻灯片、转换和多个相册选项。兼容所有现代桌面和移动浏览器。由jQuery提供。2. AD Gallery当我编写可编辑的选择插件时,我受到了自己的启发,所以我决定再写一个。这是一个与插件类似的图片库插件,比如Thickbox和L..._jthumb

flink 流式处理中如何集成mybatis框架_flink集成mybatis-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏6次。flink 中自身虽然实现了大量的connectors,如下图所示,也实现了jdbc的connector,可以通过jdbc 去操作数据库,但是flink-jdbc包中对数据库的操作是以ROW来操作并且对数据库事务的控制比较死板,有时候操作关系型数据库我们会非常怀念在java web应用开发中的非常优秀的mybatis框架,那么其实flink中是可以自己集成mybatis进来的。 我们这里以flink 1.9版本为例来进行集成。如下图为flink内部自带的flink-jdbc:创建一个fli._flink集成mybatis

SQL语言的数据类型_sql数据类型-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏21次。MySQL中的数据类型有很多,主要分为三类:1.数值类型;TINYINT 1byte (-128,127) (0,255) 小整数值SMALLINT 2bytes (-32768,32767) (0,65535) 大整数值MEDIUMINT 3bytes (-8388608,8388607) (0,16777215) 大整数值INT/INTEGER 4bytes (-2147483648, 2147483647) (0,4294967295) 大整数值BIGINT _sql数据类型

Swagger中的注解对应的springdoc-openapi-ui中的注解_springdoc注解-程序员宅基地

文章浏览阅读3.9k次。swagger是我们开发过程中非常常用的一个api 文档维护组织吗,为了前后端更好的交互,swagger早已经成为了大家的首选api 文档框架。但随着spring的发展与强大,spring也出了自己的api框架,但实用惯了swagger的用户,在切换过来后发现就不太会用了,其实springdoc本身已经集成并兼容了swagger,但对应的注解有所变化。下面我们就来看看swagger的注解在springdoc中的对应关系。springdoc的maven依赖 <dependency> _springdoc注解

随便推点

无法从jinja2 引入 evalcontextfilter, Markup, escape_from jinja2 import markup, escape-程序员宅基地

文章浏览阅读4.3k次,点赞6次,收藏10次。1、问题描述:使用airtest 进行UI自动化测试,将python3.6 升级到python3.9。各种包安装完成后,运行脚本,报错:ImportError: cannot import name evalcontextfilter, Markup, escape from ‘jinja2‘无法从jinja2引入 evalcontextfilter, Markup, escape。2、解决办法查看了之前python3.6时的jinja2版本为3.0.3;升级到python3.9后,jinja2版本_from jinja2 import markup, escape

16款ChatGPT工具,炸裂收藏!-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。上一篇:ChatGPT+XMind,炸裂了!1.ChatGPT for google一个浏览器插件,可搭配现有的搜索引擎来使用。最大化搜索效率,对搜索体验的提升相当离谱:安装完插件后,在搜索引擎搜索任何问题,都能获取两份答案。左边是谷歌抓取的全网资源,右边是ChatGPT根据搜索结果总结提供的答案。每次检索问题都要疯狂翻页、恨不得把十几年的资讯挖个底儿透的筒子们快来集合,这个真行。2.VScode..._chatgpt软件

iterator_traits 存在的作用与意义-程序员宅基地

文章浏览阅读3.3k次。1.关于迭代器有关类型的获取与iterator_traits:有时候可能我们会需要知道迭代器的某些具体有关类型,如:迭代器所指对象的类型,两个迭代器之间距离的类型,迭代器解引用操作结果的类型,迭代器->操作结果的类型,以及迭代器本身的类型(单向,双向等)。因此,不同容器的迭代器都必须支持对上述迭代器有关类型的查询反馈,STL则采用内嵌类型声明的方式来实现对上述类型的返回。其中:value__iterator_traits

springboot使用aop以及原理分析_spring boot aspect原理-程序员宅基地

文章浏览阅读1.5k次。Java架构师交流群:793825326java版本:jdk1.8IDE:Idea2019Springboot:2.1.6.RELEASE1.pom:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s..._spring boot aspect原理

编程入门训练_编程训练-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏16次。编程入门训练:题目均来自于牛客网上编程入门训练的门类,所有源码均通过平台测试,以此文记录,有助于个人学习恢复编程能力_编程训练

git报 “The stash entry is kept in case you need it again“ 错误解析_the stash entry is kept in case you need it again.-程序员宅基地

文章浏览阅读9.7k次,点赞4次,收藏8次。本地执行git pull, 报了如下错误:D:\IdeaProject-ws-2\shedudma\sh_offlinedata>git pullremote: Enumerating objects: 27, done.remote: Counting objects: 100% (27/27), done.remote: Compressing objects: 100% (12/12), done.remote: Total 14 (delta 10), reused 0 (delta_the stash entry is kept in case you need it again.