news 2026/5/21 0:15:39

Spring Boot整合Redisson的两种方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot整合Redisson的两种方式

项目场景

Spring Boot整合Redisson的两种方式,方式一直接使用yml配置,方式二创建RedissonConfig配置类。


前言

redisson和redis区别:

  1. Redis是一个开源的内存数据库,支持多种数据类型,如字符串、哈希、列表、集合和有序集合等,常用于缓存、消息队列、计数器、分布式锁和搜索等应用场景。
  2. Redisson则是一个基于Redis实现的Java驻内存数据网格,提供了一系列分布式的Java常用对象和多种锁机制,以及分布式服务,使开发者能更集中于处理业务逻辑。
  3. Redisson不支持字符串操作、排序、事务、管道、分区等Redis特性,但Redisson 提供了许多其他功能,如分布式闭锁、分布式计数器、分布式信号量等。

前提准备

版本:spring boot2.3.1.RELEASE,redisson3.21.1

maven依赖:

<dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.21.1</version> </dependency>

集成方案:

方式一:使用yml配置

1.单节点配置

单节点配置可以兼容redis的配置方式

application.yml

# redis配置 spring: redis: database: 0 host: 127.0.0.1 password: redis@pass port: 6001

或者使用redisson.yml文件的方式

application.yml这里引用了redisson.yml文件

spring: redis: # redisson配置 redisson: file: classpath:redisson.yml

redisson.yml

# 单节点配置 singleServerConfig: # 数据库编号 database: 0 # 节点地址 address: redis://127.0.0.1:6001 # 密码 password: redis@pass

application.yml与redisson.yml在同级,目录结构如下:

2.集群模式配置

集群模式不能兼容redis之前的配置方式

application.yml没变

spring: redis: # redisson配置 redisson: file: classpath:redisson.yml

更改redisson.yml内容

# 集群模式 clusterServersConfig: # 集群节点地址 nodeAddresses: - "redis://127.0.0.1:18001" - "redis://127.0.0.1:18002" - "redis://127.0.0.1:18003" - "redis://127.0.0.1:18004" - "redis://127.0.0.1:18005" - "redis://127.0.0.1:18006" # 密码 password: redis@pass

Redis集群不支持多个数据库的概念,默认只有一个数据库,即db 0,所以这里是没有database这个参数的。


方式二:创建RedissonConfig配置类

配置类已经兼容单节点和集群模式,参数名可以自定义,数据库默认使用db 0。

application.yml

spring: redis: # redisson配置 redisson: # 如果该值为false,系统将不会创建RedissionClient的bean。 enabled: true # mode的可用值为,single/cluster/sentinel/master-slave mode: single # single: 单机模式 # address: redis://localhost:6379 # cluster: 集群模式 # 每个节点逗号分隔,同时每个节点前必须以redis://开头。 # address: redis://localhost:6379,redis://localhost:6378,... # sentinel: # 每个节点逗号分隔,同时每个节点前必须以redis://开头。 # address: redis://localhost:6379,redis://localhost:6378,... # master-slave: # 每个节点逗号分隔,第一个为主节点,其余为从节点。同时每个节点前必须以redis://开头。 # address: redis://localhost:6379,redis://localhost:6378,... address: redis://127.0.0.1:6001 # redis 密码,空可以不填。 password: redis@pass database: 0

RedissonConfig

import org.apache.commons.lang3.StringUtils; import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Redisson配置类。 */ @Configuration @ConditionalOnProperty(name = "spring.redis.redisson.enabled", havingValue = "true") public class RedissonConfig { @Value("${spring.redis.redisson.mode}") private String mode; /** * 仅仅用于sentinel模式。 */ @Value("${spring.redis.redisson.masterName:}") private String masterName; @Value("${spring.redis.redisson.address}") private String address; @Value("${spring.redis.redisson.password:}") private String password; /** * 数据库默认0 */ @Value("${spring.redis.redisson.database:0}") private Integer database; @Bean public RedissonClient redissonClient() { if (StringUtils.isBlank(password)) { password = null; } Config config = new Config(); if ("single".equals(mode)) { config.useSingleServer() .setDatabase(database) .setPassword(password) .setAddress(address); } else if ("cluster".equals(mode)) { String[] clusterAddresses = address.split(","); config.useClusterServers() //集群模式不支持多个数据库概念,默认db 0 .setPassword(password) .addNodeAddress(clusterAddresses); } else if ("sentinel".equals(mode)) { String[] sentinelAddresses = address.split(","); config.useSentinelServers() .setDatabase(database) .setPassword(password) .setMasterName(masterName) .addSentinelAddress(sentinelAddresses); } else if ("master-slave".equals(mode)) { String[] masterSlaveAddresses = address.split(","); if (masterSlaveAddresses.length == 1) { throw new IllegalArgumentException( "redis.redisson.address MUST have multiple redis addresses for master-slave mode."); } String[] slaveAddresses = new String[masterSlaveAddresses.length - 1]; System.arraycopy(masterSlaveAddresses, 1, slaveAddresses, 0, slaveAddresses.length); config.useMasterSlaveServers() .setDatabase(database) .setPassword(password) .setMasterAddress(masterSlaveAddresses[0]) .addSlaveAddress(slaveAddresses); } else { throw new IllegalArgumentException(mode); } return Redisson.create(config); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:56:00

HY-MT1.5-1.8B功耗测试:边缘设备低能耗运行实测报告

HY-MT1.5-1.8B功耗测试&#xff1a;边缘设备低能耗运行实测报告 随着多语言交流需求的快速增长&#xff0c;高质量、低延迟的翻译模型成为智能终端和边缘计算场景的关键技术支撑。腾讯开源的混元翻译大模型HY-MT1.5系列&#xff0c;凭借其在翻译质量、功能扩展与部署灵活性上的…

作者头像 李华
网站建设 2026/5/1 7:10:46

HY-MT1.5-1.8B实战:移动APP实时翻译集成

HY-MT1.5-1.8B实战&#xff1a;移动APP实时翻译集成 随着全球化进程的加速&#xff0c;跨语言交流已成为移动应用不可或缺的功能。然而&#xff0c;传统云端翻译方案存在延迟高、隐私泄露风险和离线不可用等问题&#xff0c;尤其在实时对话、即时消息等场景中表现不佳。为解决…

作者头像 李华
网站建设 2026/5/10 21:20:48

腾讯Youtu-Embedding:20亿参数中文嵌入性能之王

腾讯Youtu-Embedding&#xff1a;20亿参数中文嵌入性能之王 【免费下载链接】Youtu-Embedding 项目地址: https://ai.gitcode.com/tencent_hunyuan/Youtu-Embedding 导语&#xff1a;腾讯优图实验室推出的Youtu-Embedding模型以20亿参数规模&#xff0c;在中文文本嵌入…

作者头像 李华
网站建设 2026/5/1 3:11:54

HY-MT1.5格式化模板库:常见文档类型预设

HY-MT1.5格式化模板库&#xff1a;常见文档类型预设 1. 引言 随着全球化进程的加速&#xff0c;高质量、多语言互译能力已成为企业出海、跨文化交流和智能硬件落地的核心需求。然而&#xff0c;传统翻译模型在面对混合语言、专业术语密集或结构化文本&#xff08;如技术文档、…

作者头像 李华
网站建设 2026/5/14 11:11:33

HY-MT1.5部署遇坑?单卡4090D自动启动避坑指南保姆级教程

HY-MT1.5部署遇坑&#xff1f;单卡4090D自动启动避坑指南保姆级教程 1. 引言&#xff1a;为什么选择HY-MT1.5&#xff1f; 随着多语言交流需求的爆发式增长&#xff0c;高质量、低延迟的翻译模型成为AI应用落地的关键组件。腾讯近期开源的混元翻译大模型1.5版本&#xff08;HY…

作者头像 李华
网站建设 2026/5/8 0:29:33

腾讯开源翻译模型HY-MT1.5:多语言互译API搭建指南

腾讯开源翻译模型HY-MT1.5&#xff1a;多语言互译API搭建指南 1. 引言 随着全球化进程的加速&#xff0c;跨语言沟通已成为企业出海、内容本地化和国际协作的核心需求。然而&#xff0c;商业翻译API往往存在成本高、数据隐私风险大、定制能力弱等问题。在此背景下&#xff0c;…

作者头像 李华