• Redisson集成SpringBoot


    前言:Redisson集成SpringBoot主要有两种方式,一个是使用redisson-spring-boot-starter依赖(优先推荐),毕竟springboot主打的就是约定大于配置,这个依赖就是为springboot准备的。

    再一种方式就是引入redisson原始依赖,自己写配置类注入到spring容器中,这种太麻烦没必要。

    这里主要记录一下第一种方式,先看官网介绍redisson/redisson-spring-boot-starter at master · redisson/redisson · GitHub

    首先关于版本对应关系的问题,目前发现sprinBoot2.3.x版本使用redisson-spring-boot-starter 3.30.0版本是没问题的。
    官方说了:redisson-spring-boot-starter与Spring Boot的版本兼容是通过redisson-spring-boot-starter中引入的redisson-spring-data模块来做的,如果需要,降级redisson-spring-data模块以支持以前的Spring Boot版本。

     也就是说,如果发现不兼容问题,可以通过降低redisson-spring-data依赖的版本来解决。

    具体做法就是:引入依赖后,排出高版本的redisson-spring-data,再引入低版本的即可。

    下图可以看到,redisson-spring-boot-starter的pom文件中引入了redisson-spring-data-x。

    下面开始

    一、添加依赖

    1. <dependency>
    2. <groupId>org.redissongroupId>
    3. <artifactId>redisson-spring-boot-starterartifactId>
    4. <version>3.30.0version>
    5. dependency>

    二、配置文件添加配置

    配置文件主要有两种方式:

    第一种是直接使用spring-boot-starter-data-redis的配置,redisson完全兼容spring-boot-starter-data-redis的配置,打开redisson-spring-boot-starter 的pom文件可以看到,他也是引入了spring-boot-starter-data-redis的依赖。

    第二可以使用redisson自己的配置方式。

    官网两种配置方式都有示例。

    这里就直接使用spring-boot-starter-data-redis的配置,这种方式比较简单。

    1. spring:
    2. application:
    3. name: demo # 应用名称
    4. #### Redisson配置,兼容spring-boot-starter-data-redis的配置
    5. redis:
    6. jedis:
    7. # 连接池配置,如果不配置就会使用默认值
    8. pool:
    9. #最大连接数
    10. max-active: 50
    11. #最大阻塞等待时间(负数表示没限制)
    12. max-wait: 20000
    13. #最大空闲连接
    14. max-idle: 10
    15. #最小空闲连接
    16. min-idle: 1
    17. database: 0
    18. host: 127.0.0.1
    19. port: 6379
    20. ssl: false
    21. #连接超时时间(毫秒)
    22. timeout: 3000
    23. ########### 集群模式
    24. # cluster:
    25. # nodes: 127.0.0.1:6379,127.0.0.2:6379,127.0.0.3:6379
    26. ########### 哨兵模式
    27. # sentinel:
    28. # master: mymaster # Sentinel中配置的主节点名称
    29. # nodes: 127.0.0.1:6379,127.0.0.2:6379,127.0.0.3:6379

    如果要使用redisson自己的配置方式,参考官网即可,官网两种就有示例。

    三、代码示例

    1. @Autowired
    2. RedissonClient redissonClient;
    3. public void testLock() {
    4. //获取锁对象
    5. RLock lock = redissonClient.getLock("zhh-lock");
    6. //设置锁过期时间,防止死锁的产生
    7. boolean lockFlag = false;
    8. try {
    9. lockFlag = lock.tryLock(10, 10, TimeUnit.SECONDS);
    10. System.out.println("加锁状态:" + lockFlag);
    11. // 测试一下,添加一个键值对
    12. RBucket bucket = redissonClient.getBucket("key1");
    13. bucket.set("value1");
    14. System.out.println(bucket.get());
    15. // 删除键值对
    16. bucket.delete();
    17. } catch (InterruptedException e) {
    18. System.out.println("加锁出现异常");
    19. e.printStackTrace();
    20. } finally {
    21. if (lockFlag) {
    22. lock.unlock();
    23. System.out.println("释放锁成功");
    24. }
    25. }
    26. }

  • 相关阅读:
    java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
    Java(八)FutureTask源码
    Python keyword-only参数
    算法 杨辉三角求解 java打印杨辉三角 多路递归打印杨辉三角 递归优化杨辉三角 记忆法优化递归 帕斯卡三角形 算法(十二)
    关于MyBatis-plus中为什么要重写ServiceImpl接口中的问题
    第1篇 目标检测概述 —(3)YOLO系列算法
    前端面试题:基础理论整理(篇2)
    十四、商城 - 商城架构-SSM(2)
    【动态顺序表实现-C++】
    Pytorch入门(3)—— 构造网络模型
  • 原文地址:https://blog.csdn.net/Muscleheng/article/details/139248641