👀 简介
Redisson是一个基于Java的Redis客户端库,它提供了许多有用的功能和工具,使得在使用Redis时更加方便和强大。Redisson可以与Spring Boot集成,以简化在Spring应用程序中使用Redis的过程。
以下是关于Redisson的一些主要特点和功能:
- 分布式对象模型:Redisson允许您将Java对象保存在Redis中,这些对象可以通过Redis的分布式特性进行管理和共享。这意味着您可以使用Redis作为分布式缓存和数据存储,而不必手动处理序列化和反序列化。
- 分布式锁:Redisson提供了分布式锁的支持,可以用于在多个应用程序实例之间同步对共享资源的访问。这对于实现分布式任务调度和资源管理非常有用。
- 分布式集合:Redisson支持分布式集合数据结构,如List、Set、Map等,这些数据结构可以在多个节点之间共享和操作。
- 分布式队列和主题:Redisson提供了分布式队列和主题(Pub/Sub)的实现,用于实现事件驱动的架构和消息传递。
- Redis连接池管理:Redisson自动管理Redis连接池,确保连接的高效使用和释放,同时提供了连接监控和负载均衡功能。
- Spring Boot集成:Redisson提供了与Spring Boot的集成,您可以通过简单的配置将Redisson集成到Spring Boot应用程序中。这样,您可以轻松地使用Redisson的功能来处理Redis操作。
👀 配置方法
在 Redisson 中,有许多配置项可以根据应用的需求进行调整。下面是一个详细的配置示例,用于在 Spring Boot 中配置 Redisson:
首先,确保你已在
pom.xml
中添加了 Redisson 的依赖:
<!-- Redisson Spring Boot Starter 依赖 --><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.15.0</version><!-- 根据实际情况选择版本 --></dependency>
接下来,在
application.properties
或
application.yml
中指定 Redisson 配置文件的位置:
# 指定 Redisson 配置文件的位置
redisson.config=classpath:redisson.yaml
现在,我们将创建一个
redisson.yaml
文件来进行详细的配置。将此文件放在
resources
文件夹下。
# 单一 Redis 服务器模式singleServerConfig:# Redis 服务器的地址address:"redis://127.0.0.1:6379"# 连接池的大小connectionPoolSize:64# Redis 服务器的密码password:"your_password"# Redis 数据库索引database:0# 客户端名称clientName:"your_client_name"# 超时时间,单位为毫秒timeout:3000# Redis 命令失败重试次数retryAttempts:3# 两次命令之间重试的时间间隔,单位为毫秒retryInterval:1500# 发布和订阅的连接的最小数量subscriptionConnectionMinimumIdleSize:1# 发布和订阅的连接池的大小subscriptionConnectionPoolSize:50# 当前处理 Redis 命令的线程共享的联接connectionMinimumIdleSize:10# 集群模式的配置 (需要注释或删除 singleServerConfig 当使用此模式)#clusterServersConfig:# scanInterval: 2000# slaveConnectionPoolSize: 64# slaveConnectionMinimumIdleSize: 24# masterConnectionPoolSize: 64# masterConnectionMinimumIdleSize: 24# readMode: "SLAVE"# nodeAddresses:# - "redis://127.0.0.1:7001"# - "redis://127.0.0.1:7002"# - "redis://127.0.0.1:7003"# password: "your_password"# 其他模式,如 sentinel, masterSlave, replicated 可以在这里配置,但确保只有一个模式处于未注释状态# 线程工厂配置threads:16nettyThreads:32# 编解码器配置,默认是 Jacksoncodec:!<org.redisson.codec.JsonJacksonCodec>{}# 传输模式,默认是 NIOtransportMode:"NIO"
上述配置涵盖了 Redisson 的许多常见配置项。当然,Redisson 还提供了许多其他的高级配置,如 SSL 配置、云服务配置等。根据你的实际需求,可以进一步定制此配置文件。
这就是在 Spring Boot 中进行 Redisson 详细配置的方法。这个配置文件使用了单一服务器模式,但 Redisson 还支持许多其他的服务器配置模式,如集群、哨兵、主从等。这些模式的配置项也可以在上面的示例中找到,但默认是被注释掉的。
结合Spring Boot, Redisson为Java提供了Redis的客户端,支持大量的分布式Java对象和服务。以下是Redisson的几种主要配置方法:
✌1. 程序化配置方法
✍作用:
通过Java代码来配置Redisson客户端,提供了一种动态的方式来调整和设置Redisson的参数。
✍使用场景:
当应用程序需要基于不同的条件(如环境、用户输入或其他动态因素)来配置Redisson时。
✍优缺点:
- 优点:非常灵活,可以根据实时的应用需求或条件来调整。
- 缺点:可能导致配置逻辑分散在代码的多个位置,增加了代码的复杂性。
🎷示例
在Spring Boot中,您可以使用Java代码来配置Redisson客户端。这种方法非常适合动态配置,或者根据不同的条件来设置配置。
🎯 示例:
💡 首先,确保您已在
pom.xml
中添加了Redisson和Spring Boot的依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>最新版本</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
💡 接下来,在Spring Boot的主配置类或一个配置类中,您可以这样配置Redisson:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Bean(destroyMethod="shutdown")publicRedissonClientredisson(){Config config =newConfig();
config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("yourPassword");// 如果设置了密码returnRedisson.create(config);}}
💡 在上面的代码中,我们配置了一个单一的Redis服务器实例。您可以根据您的需求调整配置,例如使用哨兵模式、集群模式等。
💡 现在,您可以在任何Spring组件或服务中注入
RedissonClient
,然后使用它来与Redis交互。
importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassSomeService{@AutowiredprivateRedissonClient redissonClient;publicvoidsomeMethod(){// 使用redissonClient进行操作...}}
✌2. 文件方式配置
✍作用:
允许开发者使用外部的配置文件(如YAML或JSON)来设置Redisson客户端。
✍使用场景:
适用于大部分应用,特别是当配置信息相对静态,或需要在不同的环境中共享相同的配置时。
✍优缺点:
- 优点:配置清晰,集中,容易进行版本控制。
- 缺点:需要重新启动应用来应用配置的更改。
🎷示例
- 添加 Maven 依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
- 在
application.yml
文件中配置 Redisson:
redisson:config: classpath:redisson-config.yml
- 创建一个
redisson-config.yml
文件,该文件包含 Redisson 的配置:
singleServerConfig:idleConnectionTimeout:10000pingTimeout:1000connectTimeout:10000timeout:3000retryAttempts:3retryInterval:1500password:nullsubscriptionsPerConnection:5clientName:nulladdress:"redis://127.0.0.1:6379"subscriptionConnectionMinimumIdleSize:1subscriptionConnectionPoolSize:50connectionMinimumIdleSize:10connectionPoolSize:64database:0dnsMonitoringInterval:5000threads:16nettyThreads:32codec:!<org.redisson.codec.JsonJacksonCodec>{}
- 在 Spring Boot 应用程序中使用 Redisson:
@RestControllerpublicclassRedisController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetKey(@RequestParamString key,@RequestParamString value){RMap<String,String> map = redissonClient.getMap("myMap");
map.put(key, value);return"Value set!";}@GetMapping("/get")publicStringgetKey(@RequestParamString key){RMap<String,String> map = redissonClient.getMap("myMap");return map.get(key);}}
✌3. 常用设置
不同的Redisson编码方式的名称、作用和使用场景:
编码方式作用和特点使用场景JsonJacksonCodecJackson JSON编码,默认编码方式一般的JSON数据序列化和反序列化AvroJacksonCodec二进制的JSON编码,高性能需要高性能的二进制JSON数据编码SmileJacksonCodec另一种二进制的JSON编码,紧凑紧凑的二进制JSON数据编码CborJacksonCodecCBOR二进制JSON编码高效的CBOR格式数据编码MsgPackJacksonCodecMsgPack二进制JSON编码高效的MsgPack格式数据编码IonJacksonCodecAmazon Ion编码,类似JSON与Amazon Ion格式交互的情况KryoCodec二进制对象序列化编码,高性能需要高性能的Java对象序列化SerializationCodecJDK序列化编码,性能较差原生Java对象序列化FstCodecFST二进制对象序列化编码,高性能高性能Java对象序列化LZ4Codec压缩型序列化对象编码,高效高效压缩的数据存储和检索SnappyCodec压缩型序列化对象编码,高效高效压缩的数据存储和检索JsonJacksonMapCodec基于Jackson的映射类使用的编码映射类数据的序列化和反序列化StringCodec纯字符串编码,无转换存储和检索简单字符串数据LongCodec纯整长型数字编码,无转换存储和检索长整数数据ByteArrayCodec字节数组编码存储和检索原始字节数据CompositeCodec组合多种不同编码方式根据需求选择不同的编码方式
✍作用:
涉及Redisson客户端的常规设置,如连接池大小、连接超时、线程设置等。
✍使用场景:
根据应用的规模和需求来调整和优化Redisson客户端的性能。
✍优缺点:
- 优点:提供了对Redisson行为的细致控制,可以优化性能。
- 缺点:需要对Redis和Redisson有一定了解,以确保正确的配置。
🎷示例
Redisson 是一个功能强大的 Java 客户端库,用于与 Redis 交互。它提供了丰富的设置选项,用于配置 Redisson 的行为和性能。下面是一些 Redisson 的常用设置示例,以及如何在 Spring Boot 中配置和使用它们。
1. 配置 Redisson 连接
首先,在 Spring Boot 的
application.properties
或
application.yml
文件中配置 Redisson 连接:
# Redisson 连接配置redisson:single-server:address:"redis://localhost:6379"# Redis 服务器地址password: your_password # 如果需要密码认证的话# 或者配置 Redis 集群连接# cluster-servers:# - "redis://node1_host:6379"# - "redis://node2_host:6379"# ...
single-server
:使用单个 Redis 服务器配置。cluster-servers
:使用 Redis 集群配置。
2. 配置 Redisson 客户端
创建一个配置类,用于配置 Redisson 客户端并创建 RedissonClient 实例:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${redisson.single-server.address}")privateString redisAddress;@Value("${redisson.single-server.password}")privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword);returnRedisson.create(config);}}
3. 常用设置示例
下面是一些 Redisson 常用设置的示例:
3.1. 配置超时时间
importorg.redisson.config.Config;// ...Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword).setTimeout(3000);// 设置连接超时时间为 3000 毫秒
3.2. 配置连接池大小
importorg.redisson.config.Config;// ...Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword).setConnectionPoolSize(100);// 设置连接池大小为 100
3.3. 配置编码器
importorg.redisson.config.Config;importorg.redisson.codec.JsonJacksonCodec;// ...Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword).setCodec(JsonJacksonCodec.INSTANCE);// 设置自定义编码器
4. 使用 Redisson 设置
在你的服务类中注入
RedissonClient
并使用它来执行 Redisson 操作。以下是示例服务类:
importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassRedissonService{privatefinalRedissonClient redissonClient;@AutowiredpublicRedissonService(RedissonClient redissonClient){this.redissonClient = redissonClient;}/**
* 示例方法:向 Redis 写入数据
*
* @param key Redis 键
* @param value Redis 值
*/publicvoidwriteToRedis(String key,String value){// 使用 RedissonClient 执行写入操作
redissonClient.getBucket(key).set(value);}/**
* 示例方法:从 Redis 读取数据
*
* @param key Redis 键
* @return Redis 值
*/publicStringreadFromRedis(String key){// 使用 RedissonClient 执行读取操作return redissonClient.getBucket(key).get();}}
5. 常见的 Redisson 设置参数
在 Spring Boot 中使用 Redisson 配置常见的 Redisson 设置参数可以通过在 Spring Boot 项目的配置文件(如
application.properties
或
application.yml
)中设置相应的属性来实现。下面是如何在 Spring Boot 中结合 Redisson 配置常用的设置参数的示例,以及详细的注释:
# Redisson 配置redisson:codec: org.redisson.codec.MsgPackJacksonCodec # 设置编码方式为 MsgPackJacksonCodecthreads:16# 设置线程池数量为 16nettyThreads:32# 设置 Netty 线程池数量为 32lockWatchdogTimeout:60000# 设置锁的看门狗超时时间为 60 秒keepPubSubOrder:true# 保持订阅发布顺序performanceMode: HIGHER_THROUGHPUT # 设置高性能模式为高通量# 或者使用 Java 配置类# 使用 @ConfigurationProperties(prefix = "redisson") 注解绑定配置属性# application.properties# redisson.codec=org.redisson.codec.MsgPackJacksonCodec# redisson.threads=16# redisson.nettyThreads=32# redisson.lockWatchdogTimeout=60000# redisson.keepPubSubOrder=true# redisson.performanceMode=HIGHER_THROUGHPUT
接下来,你可以创建一个 Redisson 配置类来读取这些属性并配置 Redisson 客户端。以下是示例 Redisson 配置类:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@Configuration@ConfigurationProperties(prefix ="redisson")publicclassRedissonConfig{privateString codec;privateint threads;privateint nettyThreads;privatelong lockWatchdogTimeout;privateboolean keepPubSubOrder;privateString performanceMode;// 省略 getter 和 setter 方法@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 设置编码方式
config.setCodec(codec);// 设置线程池数量
config.setThreads(threads);// 设置 Netty 线程池数量
config.setNettyThreads(nettyThreads);// 设置锁的看门狗超时时间
config.setLockWatchdogTimeout(lockWatchdogTimeout);// 保持订阅发布顺序
config.setKeepPubSubOrder(keepPubSubOrder);// 设置高性能模式
config.setPerformanceMode(performanceMode);returnRedisson.create(config);}}
在上述示例中,我们通过
@ConfigurationProperties
注解将配置文件中的属性与配置类的属性绑定在一起,并在
RedissonConfig
类的
redissonClient
方法中使用这些属性来配置 Redisson 客户端。
✌4. 集群模式
✍作用:
允许Redisson客户端连接到Redis集群,提供数据分片和高可用性。
✍使用场景:
用于大型应用或有高可用性需求的应用。
✍优缺点:
- 优点:提供高可用性、数据冗余。
- 缺点:配置和维护相对复杂。
🎷示例
在 Spring Boot 中使用 Redisson 来配置和使用 Redis 集群模式需要执行一系列步骤。下面是一个详细的示例,每个步骤都有详细的注释。
步骤 1: 添加 Redisson 依赖
首先,在项目的 Maven
pom.xml
文件中添加 Redisson 的依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.2</version><!-- 请使用最新版本 --></dependency>
步骤 2: 配置 Redisson 集群
在 Spring Boot 应用程序的配置文件(
application.properties
或
application.yml
)中配置 Redisson 的集群信息:
# Redisson 集群配置redisson:cluster-servers:-"redis://node1_host:6379"-"redis://node2_host:6379"-"redis://node3_host:6379"password: your_password # 如果需要密码认证的话
请将上述配置中的
node1_host
、
node2_host
、
node3_host
替换为你的 Redis 集群中的实际节点主机和端口,并设置密码(如果需要)。
步骤 3: 创建 Redisson 配置类
创建一个配置类,用于配置 Redisson 并创建 RedissonClient 实例。这里使用 Java 代码示例:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${redisson.cluster-servers}")privateString[] clusterServers;@Value("${redisson.password}")privateString password;@BeanpublicRedissonClientredissonClient(){// 创建 Redisson 配置对象Config config =newConfig();
config.useClusterServers().setScanInterval(2000)// 集群节点扫描间隔时间.addNodeAddress(clusterServers).setPassword(password);// 使用配置对象创建 RedissonClient 实例returnRedisson.create(config);}}
上述配置类读取了在配置文件中定义的 Redisson 集群配置信息,并使用这些信息创建了 RedissonClient 实例。
步骤 4: 创建服务类
创建一个服务类,用于演示如何在 Spring Boot 中使用 Redisson 进行集群操作。以下是示例服务类:
importorg.redisson.api.RLock;importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassRedisClusterService{privatefinalRedissonClient redissonClient;@AutowiredpublicRedisClusterService(RedissonClient redissonClient){this.redissonClient = redissonClient;}/**
* 示例方法:获取分布式锁并执行操作
*/publicvoidexecuteWithLock(){// 获取名为 "myLock" 的分布式锁RLock lock = redissonClient.getLock("myLock");
lock.lock();// 获取锁try{// 在锁的保护下执行需要加锁的操作// ...}finally{
lock.unlock();// 释放锁}}/**
* 示例方法:向 Redis 集群写入数据
*
* @param key Redis 键
* @param value Redis 值
*/publicvoidwriteToCluster(String key,String value){// 使用 RedissonClient 执行写入操作
redissonClient.getBucket(key).set(value);}/**
* 示例方法:从 Redis 集群读取数据
*
* @param key Redis 键
* @return Redis 值
*/publicStringreadFromCluster(String key){// 使用 RedissonClient 执行读取操作return redissonClient.getBucket(key).get();}}
上述示例服务类包含了三个方法,分别演示了获取分布式锁、向 Redis 集群写入数据以及从 Redis 集群读取数据的操作。
步骤 5: 使用 Redisson 集群
在你的 Spring Boot 应用程序中,你可以注入
RedisClusterService
并使用它来执行 Redisson 集群操作。
importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/redis-cluster")publicclassRedisClusterController{privatefinalRedisClusterService redisClusterService;@AutowiredpublicRedisClusterController(RedisClusterService redisClusterService){this.redisClusterService = redisClusterService;}@GetMapping("/lock")publicStringexecuteWithLock(){// 执行带锁的操作
redisClusterService.executeWithLock();return"Operation executed with lock.";}@GetMapping("/write")publicStringwriteToCluster(){// 向 Redis 集群写入数据
redisClusterService.writeToCluster("myKey","myValue");return"Data written to Redis cluster.";}@GetMapping("/read")publicStringreadFromCluster(){// 从 Redis 集群读取数据String value = redisClusterService.readFromCluster("myKey");return"Value from Redis cluster: "+ value;}}
以上是一个完整的示例,演示了如何在 Spring Boot 中配置和使用 Redisson 的集群模式。确保按照示例中的步骤配置项目,并根据需要调整配置和操作。
✌5. 云托管模式
✍作用:
为在云服务(如Amazon AWS, Azure等)上托管的Redis服务提供专门的配置。
✍使用场景:
在云平台上运行的应用,使用云服务提供的Redis实例。
✍优缺点:
- 优点:简化了在云平台上部署和扩展Redis的过程。
- 缺点:可能需要对特定的云平台有所了解。
🎷示例
Redisson 的云托管模式允许你将 Redisson 客户端连接到云中托管的 Redis 服务,如云提供商(例如,AWS Elasticache、Azure Cache for Redis 或 Google Cloud Memorystore)中的 Redis。在这种情况下,你通常不需要配置底层的 Redis 连接信息,因为这些信息已经由云提供商进行管理。
以下是一个示例,展示如何在 Spring Boot 中配置 Redisson 的云托管模式,并连接到云中的 Redis 服务。请注意,云托管模式的具体配置可能因云提供商而异,这里提供了一个通用示例。
首先,确保你的项目中包含了 Redisson 的依赖。你可以在
pom.xml
中添加以下依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>
接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的云托管模式。以下是示例配置类,包括详细的注释:
importorg.redisson.Redisson;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.host}")// 获取 Redis 云托管的主机地址privateString redisHost;@Value("${spring.redis.port}")// 获取 Redis 云托管的端口privateint redisPort;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 使用云托管模式
config.useSingleServer().setAddress("redis://"+ redisHost +":"+ redisPort).setPassword(redisPassword);// 创建 Redisson 客户端returnRedisson.create(config);}}
在上述示例中,我们使用 Spring 的
@Value
注解从 Spring Boot 的配置文件(如
application.properties
或
application.yml
)中获取 Redis 云托管的主机地址、端口和密码。然后,我们使用这些信息配置 Redisson 的单机模式,创建一个 Redisson 客户端。
确保在你的 Spring Boot 项目中设置了正确的 Redis 云托管配置信息,以便连接到云中托管的 Redis 服务。
这只是一个通用示例,实际的云托管配置可能因云提供商而异。请根据你使用的云提供商的文档和要求来进行配置。
✌6. 单Redis节点模式
✍作用:
连接到单个的Redis服务器实例。
✍使用场景:
小型应用或开发和测试环境。
✍优缺点:
- 优点:配置简单,部署快速。
- 缺点:没有数据冗余或高可用性。
🎷示例
Redisson 的单 Redis 节点模式是一种常见的使用场景,它允许你连接到单个独立的 Redis 服务器。以下是一个详细的示例,展示如何在 Spring Boot 中配置 Redisson 的单 Redis 节点模式,以及如何使用它。每个方法和配置都有详细的注释。
首先,确保你的项目中包含了 Redisson 的依赖。你可以在
pom.xml
中添加以下依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>
接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的单 Redis 节点模式。以下是示例配置类,包括详细的注释:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.host}")// 获取 Redis 主机地址privateString redisHost;@Value("${spring.redis.port}")// 获取 Redis 端口privateint redisPort;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 配置单节点模式
config.useSingleServer().setAddress("redis://"+ redisHost +":"+ redisPort)// 设置 Redis 地址.setPassword(redisPassword);// 设置 Redis 密码// 创建 Redisson 客户端returnRedisson.create(config);}}
在上述示例中,我们使用 Spring 的
@Value
注解从 Spring Boot 的配置文件(如
application.properties
或
application.yml
)中获取 Redis 主机地址、端口和密码。然后,我们使用这些信息配置 Redisson 的单节点模式,创建一个 Redisson 客户端。
确保在你的 Spring Boot 项目中设置了正确的 Redis 单节点配置信息,以便连接到指定的 Redis 服务器。
现在,你可以在 Spring Boot 应用程序中注入
RedissonClient
bean,并使用它来与 Redis 进行交互。以下是一个示例:
importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassMyController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetValue(){// 使用 Redisson 客户端设置键值对
redissonClient.getBucket("myKey").set("myValue");return"Key-Value set successfully!";}@GetMapping("/get")publicStringgetValue(){// 使用 Redisson 客户端获取键的值String value = redissonClient.getBucket("myKey").get();return"Value for 'myKey': "+ value;}}
在上述示例中,我们通过注入
RedissonClient
bean 来获取 Redisson 客户端,并使用它来设置和获取 Redis 中的键值对。
这就是如何配置和使用 Redisson 的单 Redis 节点模式的详细示例。确保在你的应用程序中使用正确的配置信息和 Redisson 客户端来与 Redis 进行交互。
✌7. 哨兵模式
✍作用:
使用Redis哨兵提供高可用性和故障转移。
✍使用场景:
需要高可用性但不想使用集群的应用。
✍优缺点:
- 优点:自动故障转移,提供系统的韧性。
- 缺点:需要额外的哨兵节点配置和维护。
🎷示例
Redisson 的哨兵模式允许你连接到 Redis Sentinel(哨兵)集群,这是一种高可用性配置,其中多个 Redis 服务器实例通过 Sentinel 进程监控并自动切换主服务器以确保可用性。以下是一个详细的示例,展示如何在 Spring Boot 中配置 Redisson 的哨兵模式,以及如何使用它。每个方法和配置都有详细的注释。
首先,确保你的项目中包含了 Redisson 的依赖。你可以在
pom.xml
中添加以下依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>
接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的哨兵模式。以下是示例配置类,包括详细的注释:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.sentinel.master}")// 获取 Sentinel 主服务器名称privateString masterName;@Value("${spring.redis.sentinel.nodes}")// 获取 Sentinel 节点地址列表privateString sentinelNodes;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 配置哨兵模式
config.useSentinelServers().setMasterName(masterName)// 设置 Sentinel 主服务器名称.addSentinelAddress(sentinelNodes.split(","))// 设置 Sentinel 节点地址列表.setPassword(redisPassword);// 设置 Redis 密码// 创建 Redisson 客户端returnRedisson.create(config);}}
在上述示例中,我们使用 Spring 的
@Value
注解从 Spring Boot 的配置文件(如
application.properties
或
application.yml
)中获取 Sentinel 主服务器名称、Sentinel 节点地址列表和 Redis 密码(如果有)。然后,我们使用这些信息配置 Redisson 的哨兵模式,创建一个 Redisson 客户端。
确保在你的 Spring Boot 项目中设置了正确的哨兵配置信息,以便连接到 Redis Sentinel 集群。
现在,你可以在 Spring Boot 应用程序中注入
RedissonClient
bean,并使用它来与 Redis 进行交互。以下是一个示例:
importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassMyController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetValue(){// 使用 Redisson 客户端设置键值对
redissonClient.getBucket("myKey").set("myValue");return"Key-Value set successfully!";}@GetMapping("/get")publicStringgetValue(){// 使用 Redisson 客户端获取键的值String value = redissonClient.getBucket("myKey").get();return"Value for 'myKey': "+ value;}}
在上述示例中,我们通过注入
RedissonClient
bean 来获取 Redisson 客户端,并使用它来设置和获取 Redis 中的键值对。
这就是如何配置和使用 Redisson 的哨兵模式的详细示例。确保在你的应用程序中使用正确的配置信息和 Redisson 客户端来与 Redis Sentinel 集群进行交互。
✌8. 主从模式
✍作用:
设置Redis的主从复制来实现数据冗余。
✍使用场景:
需要数据冗余但不要求高可用性的应用。
✍优缺点:
- 优点:数据冗余,提高数据的安全性。
- 缺点:没有自动的故障转移。
🎷示例
Redisson 的主从模式允许你连接到 Redis 主服务器和一个或多个 Redis 从服务器。这种配置允许在主服务器上进行写操作,并在从服务器上进行读操作,从而分担主服务器的负载。以下是一个详细的示例,展示如何在 Spring Boot 中配置 Redisson 的主从模式,以及如何使用它。每个方法和配置都有详细的注释。
首先,确保你的项目中包含了 Redisson 的依赖。你可以在
pom.xml
中添加以下依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>
接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的主从模式。以下是示例配置类,包括详细的注释:
importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.master}")// 获取 Redis 主服务器地址privateString masterAddress;@Value("${spring.redis.slave}")// 获取 Redis 从服务器地址privateString slaveAddress;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 配置主从模式
config.useMasterSlaveServers().setMasterAddress(masterAddress)// 设置主服务器地址.addSlaveAddress(slaveAddress)// 添加从服务器地址.setPassword(redisPassword);// 设置 Redis 密码// 创建 Redisson 客户端returnRedisson.create(config);}}
在上述示例中,我们使用 Spring 的
@Value
注解从 Spring Boot 的配置文件(如
application.properties
或
application.yml
)中获取 Redis 主服务器地址、从服务器地址和 Redis 密码(如果有)。然后,我们使用这些信息配置 Redisson 的主从模式,创建一个 Redisson 客户端。
确保在你的 Spring Boot 项目中设置了正确的主从配置信息,以便连接到 Redis 主服务器和从服务器。
现在,你可以在 Spring Boot 应用程序中注入
RedissonClient
bean,并使用它来与 Redis 进行交互。以下是一个示例:
importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassMyController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetValue(){// 使用 Redisson 客户端设置键值对(写操作在主服务器上执行)
redissonClient.getBucket("myKey").set("myValue");return"Key-Value set successfully on master!";}@GetMapping("/get")publicStringgetValue(){// 使用 Redisson 客户端获取键的值(读操作在从服务器上执行)String value = redissonClient.getBucket("myKey").get();return"Value for 'myKey' (from slave): "+ value;}}
在上述示例中,我们通过注入
RedissonClient
bean 来获取 Redisson 客户端,并使用它来设置和获取 Redis 中的键值对。请注意,写操作在主服务器上执行,而读操作在从服务器上执行,以减轻主服务器的负载。
这就是如何配置和使用 Redisson 的主从模式的详细示例。确保在你的应用程序中使用正确的配置信息和 Redisson 客户端来与 Redis 主从集群进行交互。
版权归原作者 yueerba126 所有, 如有侵权,请联系我们删除。