springboot集成redisson

news2025/1/22 17:04:58

        springboot集成redisson有两种方式,分别是集成redisson-spring-boot-starter或redisson-spring-data。由于作者的项目和redisson-spring-boot-starter有冲突,所以选择集成redisson-spring-data,下面介绍集成集成步骤,已单机版redis为列。

引用依赖

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-data-27</artifactId>
            <version>3.23.3</version>
        </dependency>

根据官网说明,不同步的springboot版本引入不同版本的redisson-spring-data,如下

https://github.com/redisson/redisson/tree/master/redisson-spring-data

配置redisson

 1、在classpath下添加redisson.yaml文件用于存放redisson的配置,更多配置参考官网

https://github.com/redisson/redisson/wiki/2.-Configuration

singleServerConfig:
  address: redis://127.0.0.1:6379 #redis地址
  database: 0 #Database index used for Redis connection
  connectTimeout: 10000 #连接到任何Redis服务器时超时
  timeout: 3000 #Redis服务器响应超时。Redis命令发送成功后开始倒计时。毫秒值
  connectionPoolSize: 64 #Redis连接最大池大小
  connectionMinimumIdleSize: 24 #最小空闲Redis连接量
  idleConnectionTimeout: 10000 #如果池连接在超时时间内未使用,并且当前连接数量大于最小空闲连接池大小,则将关闭并从池中删除。毫秒值
  retryAttempts: 3 #重试次数,如果在retryAttempts之后Redis命令不能被发送到Redis服务器,将会抛出错误。但如果发送成功,则会启动超时
  retryInterval: 1500 #在此时间间隔之后,将执行另一次发送Redis命令的尝试。单位为毫秒
  subscriptionConnectionPoolSize: 50 #Redis订阅连接最大池大小
  subscriptionsPerConnection: 5 #每个Redis连接的订阅限制
  subscriptionConnectionMinimumIdleSize: 1 #最小空闲Redis订阅连接数
  dnsMonitoringInterval: 5000 #DNS变更监控周期。应用程序必须确保JVM DNS缓存TTL足够低以支持这一点。设置-1为禁用。代理模式下支持单个主机名的多个IP绑定
  #password: null
  #username: null
  #clientName: null 客户端连接名称
  #credentialsResolver: 默认空,定义在连接Redis服务器身份验证时调用的凭据解析器。每个Redis节点地址返回凭据对象,它包含用户名和密码字段。允许指定动态更改Redis凭据。

2、注册RedissonClient

@Configuration
public class RedissonSpringDataConfig {

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

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redisson(@Value("classpath:/redisson.yaml") Resource configFile) throws IOException {
        Config config = Config.fromYAML(configFile.getInputStream());
        return Redisson.create(config);
    }

}

3、编写工具类

@Component
public class RedissonUtil {

    private static RedissonClient redissonClient;

    @Autowired
    public void setRedissonClient(RedissonClient redissonClient) {
        RedissonUtil.redissonClient = redissonClient;
    }

    /**
     * key是否存在
     * @param key
     * @return
     */
    public static boolean isExists(String key){
        return redissonClient.getBucket(key).isExists();
    }

    /**
     * 获取生命周期
     * @param key
     * @return
     */
    public static long getExpireTime(String key){
        return redissonClient.getBucket(key).remainTimeToLive();
    }

    /**
     * 设置生命周期
     * @param key
     * @param time
     * @return
     */
    public static boolean setExpireTime(String key, Long expire){
        return redissonClient.getBucket(key).expire(Duration.ofMillis(expire));
    }

    /**
     * 保存字符串
     * @param key
     * @param value
     */
    public static void setStr(String key, String value){
        RBucket<String> rBucket = redissonClient.getBucket(key);
        rBucket.set(value);
    }

    /**
     * 保存字符串
     * @param key
     * @param value
     * @param expire
     */
    public static void setStr(String key, String value, Long expire){
        RBucket<String> rBucket = redissonClient.getBucket(key);
        rBucket.set(value, Duration.ofMillis(expire));
    }

    /**
     * 查询字符串
     * @param key
     * @return
     */
    public static String getStr(String key){
        if(isExists(key)){
            return null;
        }
        RBucket<String> rBucket = redissonClient.getBucket(key);
        return rBucket.get();
    }

    /**
     * 保存对象
     * @param key
     * @param value
     * @param <T>
     */
    public static <T> void setObject(String key, T value){
        RBucket<T> rBucket = redissonClient.getBucket(key);
        rBucket.set(value);
    }

    /**
     * 保存对象
     * @param key
     * @param value
     * @param expire
     * @param <T>
     */
    public static <T> void setObject(String key, T value, Long expire){
        RBucket<T> rBucket = redissonClient.getBucket(key);
        rBucket.set(value, Duration.ofMillis(expire));
    }

    /**
     * 查询对象
     * @param key
     * @return
     */
    public static <T> T getObject(String key){
        RBucket<T> rBucket = redissonClient.getBucket(key);
        return rBucket.get();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对CSV格式的数据文件进行插值处理

使用Python程序&#xff0c;实现对一个较短的csv文件&#xff0c;进行差值处理&#xff0c;并绘制GUI界面&#xff1b; 这个程序是一个使用Python的Tkinter库构建的GUI应用程序&#xff0c;用于对CSV格式的数据文件进行插值处理。下面我会逐步解释程序的各个部分和功能&#x…

使用 docker 搭建 granfana+prometheus 监控平台监控测试服务器资源

互联网发展的今天&#xff0c;人们对互联网产品的用户体验要求也越来越高&#xff0c;企业为了能提供更优质的用户体验&#xff0c;就会绞尽脑汁想尽各种办法。而对于服务器的资源监控&#xff0c;搭建一个资源监控平台&#xff0c;就是一个很好的维护优质服务的保障平台。利用…

函数的参数传递和返回值-PHP8知识详解

本文学习的是《php8知识详解》中的《函数的参数传递和返回值》。主要包括&#xff1a;向函数传递参数值、向函数传递参数引用、函数的返回值。 1、向函数传递参数值 函数是一段封闭的程序&#xff0c;有时候&#xff0c;程序员需要向函数传递一些数据进行操作。可以接受传入参…

Python如何输出文本到屏幕

如何输出文本到屏幕 在Python中&#xff0c;要将文本输出到屏幕&#xff0c;可以使用print()函数。这个函数是Python中的内置函数&#xff0c;非常常用&#xff0c;让我们一起来学习如何使用它。 使用print()函数 print()函数用于将内容输出到终端&#xff08;屏幕&#xff…

从0开始配置eslint

没有在.eslintrc文件中配置parserOptions指定语言版本和模块类型 {"parserOptions": {"ecmaVersion": 7, //指定es版本为es2016"sourceType": "module", //使用import导入模块} }eslint还不能识别jsx语法 {"parserOptions"…

Android11.0 Launcher3单层app列表页排序功能实现

1.概述 在11.0的定制化开发中,对于Launcher3的功能定制也是好多的,而对于单层app列表页来说排序功能的开发,也是常有的功能这就需要了解加载app数据的流程,然后根据需要进行排序就可以了, 如图: 2. Launcher3 单层app列表页排序功能实现 packages\apps\Launcher3\src\…

禅道后台命令执行漏洞

漏洞简介 禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体&#xff0c;是一款专业的研发项目管理软件&#xff0c;完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效&#xff0c;功能完备丰富&#xff0c;…

Matlab彩色图像转索引图像

索引图像 索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像包括一个数据矩阵X&#xff0c;一个调色板矩阵map&#xff0c;也称为颜色映像矩阵。其中&#xff0c;数据矩阵X可以是8位无符号整型、16位无符号整型或双精度类型。调色板矩阵map是一个m3的数据阵列&…

操作符详解-C语言

目录 一、操作符分类 二、算术操作符 三、移位操作符 3.1. 左移操作数 3.2 右移操作符 四、位操作符 五、赋值操作符 六、单目操作符 七、关系操作符 八、逻辑操作符 九、条件操作符 十、逗号表达式 十一、下标引用函数调用和结构体成员 一、操作符分类 操作符分为算…

ArrayList的介绍

arrayList数组列表&#xff0c;特点是 ①有序&#xff1a;y元素存入的顺序和取出的顺序一致&#xff1b; ②可重复&#xff1a;可以存储重复的元素 ③可为null&#xff1a;可以存储多个null 优点&#xff1a;查询快 缺点&#xff1a;插入删除慢 size是元素的个数&#xff0c;容…

设计模式之详解

概念 在软件工程中&#xff0c;设计模式是指软件设计问题的推荐方案。 设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 好处 设计模式可以提高代码的可重用性和可读…

春秋云镜 CVE-2018-7422

春秋云镜 CVE-2018-7422 WordPress Plugin Site Editor LFI 靶标介绍 WordPress Plugin Site Editor LFI 启动场景 漏洞利用 exp http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path/etc…

Python爬虫(十五)_案例:使用bs4的爬虫

本章将从Python案例讲起&#xff1a;所使用bs4做一个简单的爬虫案例&#xff0c;更多内容请参考:Python学习指南 案例&#xff1a;使用BeautifulSoup的爬虫 我们已腾讯社招页面来做演示&#xff1a;http://hr.tencent.com/position.php?&start10#a 使用BeautifulSoup4解析…

【3dsmax】制作简单的动画

步骤 1. 首先打开“时间配置”按钮进行设置 这里我们设置动画的总时长为300帧&#xff0c;也就是10秒 设置完毕后可以看到时间轴的最大刻度就是300 下面以一个长方体为例来掩饰动画的基本制作方式 2. 首先我们创建了一个长方体 3. 打开“自动关键点” 将时间轴滑块从第0帧修改…

两个git本地如何配置两个ssh密钥for mac

我是在mac上操作的。windows上也差不多一样操作。 1.找到本地的.ssh文件。我的文件结构如下如&#xff1a; 文件结构&#xff1a; &#xff08;1&#xff09;两个known_hosts文件是自动生成的&#xff0c;不用管 &#xff08;2&#xff09;readme文件是我个人记事本记录笔记…

Stable Diffusion 文生图技术原理

图像生成模型简介 图片生成领域来说&#xff0c;有四大主流生成模型&#xff1a;生成对抗模型&#xff08;GAN&#xff09;、变分自动编码器&#xff08;VAE&#xff09;、流模型&#xff08;Flow based Model&#xff09;、扩散模型&#xff08;Diffusion Model&#xff09;。…

Java 基于 SpringBoot+Vue 的在线考试系统的研究与实现,2.0 版本

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 第一章第二章.主要技术第三章第四章 系统设计4.1功能结构4.2 数据库设计4.2.1 数据库E/R图4.2.2 数…

Qt5升级到Qt6分步迁移教程

Qt框架的一个新的长期支持版本6.5最近发布。它为以前的版本引入了许多修复、改进和新功能。有些可能对您的应用程序有用&#xff08;如果不是现在&#xff0c;可能会在将来&#xff09;&#xff0c;因此最好将应用程序迁移到最新版本的框架。 仍然有许多应用程序仍在使用Qt 5&…

猜数字游戏过程honest(诚实)判定

根据记录的游戏过程文本&#xff0c;判定Tom是否不老实作弊。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那…

【Unity】【Amplify Shader Editor】ASE入门系列教程第二课 硬边溶解

新建材质&#xff08;不受光照影响&#xff09; 拖入图片 设置 添加节点&#xff1a; 快捷键&#xff1a;K 组合通道&#xff1a;快捷键 V 完成图