1. 单机模式
application.properties 配置:
java
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=yourpassword
spring.redis.host
: 该配置指定 Redis 服务器的主机地址。在单机模式下,通常是本地 Redis 实例(127.0.0.1
)。spring.redis.port
: 该配置指定 Redis 实例的端口号,默认情况下 Redis 使用的是6379
端口。spring.redis.password
: 如果 Redis 配置了密码,您可以在此处指定密码。否则,可以省略此项。
作用:
这些配置会自动被 Spring Boot 中的 RedisTemplate
使用,以连接到 Redis 单机实例。当您启动应用时,Spring Boot 会自动根据这些配置初始化一个 RedisTemplate
实例来与 Redis 交互。
RedissonClient 配置:
java
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379")
.setPassword("yourpassword");
return Redisson.create(config);
}
useSingleServer()
: 这是 Redisson 中用于单机模式的配置方法,它表明 Redisson 将连接到一个单独的 Redis 实例。setAddress("redis://127.0.0.1:6379")
: 设置 Redis 服务器的地址。前缀redis://
用来指定协议,后面是 Redis 的主机和端口。setPassword("yourpassword")
: 配置 Redis 密码,如果 Redis 设置了密码,那么必须在此指定。
作用:
Redisson 使用这种方式连接到 Redis 单机实例,与 RedisTemplate
配置类似,但是在 Redisson 中,您需要手动创建一个 RedissonClient
实例,并指定连接的配置。
2. 主从模式
application.properties 配置:
Spring Boot 默认不支持 Redis 主从模式的自动配置。您需要手动配置 LettuceConnectionFactory
,在 RedisTemplate
中使用。
示例配置:
java
spring.redis.master=master
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.2:26379
spring.redis.password=yourpassword
spring.redis.master
: 该配置指定 Redis 哨兵模式中的主节点名称(通常为mymaster
)。spring.redis.sentinel.nodes
: 这是 Redis 哨兵节点的地址列表,用逗号分隔。每个地址指定了一个哨兵节点的位置,通常是多个冗余的 Redis 哨兵节点。spring.redis.password
: 如果 Redis 设置了密码,您可以在此处指定。
作用:
通过这些配置,Spring Boot 可以配置连接到 Redis 哨兵,并通过哨兵节点动态管理 Redis 的主从切换,确保高可用性。
RedissonClient 配置:
java
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useMasterSlaveServers()
.setMasterAddress("redis://127.0.0.1:6379")
.addSlaveAddress("redis://127.0.0.2:6379", "redis://127.0.0.3:6379")
.setPassword("yourpassword");
return Redisson.create(config);
}
useMasterSlaveServers()
: 这是 Redisson 中用于主从模式的配置方法。它会指定 Redis 主节点的地址(setMasterAddress
)和从节点的地址(addSlaveAddress
)。Redisson 会在主节点不可用时自动切换到从节点。setMasterAddress("redis://127.0.0.1:6379")
: 设置主节点的地址。addSlaveAddress("redis://127.0.0.2:6379", "redis://127.0.0.3:6379")
: 设置从节点的地址。您可以添加多个从节点以实现负载均衡。setPassword("yourpassword")
: 设置 Redis 密码。
作用:
Redisson 会使用主从模式连接到 Redis,自动处理主从切换,并提供高可用性。与 RedisTemplate
配置相比,RedissonClient
提供了更强大的分布式功能,例如分布式锁和队列等。
3. 哨兵模式
application.properties 配置:
java
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.2:26379
spring.redis.password=yourpassword
spring.redis.sentinel.master
: 该配置指定 Redis 哨兵模式中的主节点名称。spring.redis.sentinel.nodes
: 配置 Redis 哨兵的节点列表。每个哨兵节点的 IP 地址和端口号,Spring Boot 会根据这个配置来发现主从节点,并管理主从切换。spring.redis.password
: 如果 Redis 设置了密码,则在此处指定。
作用:
Spring Boot 会根据配置自动连接到 Redis 哨兵,并使用动态的主从切换来实现高可用性。
RedissonClient 配置:
java
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSentinelServers()
.setMasterName("mymaster")
.addSentinelAddress("redis://127.0.0.1:26379", "redis://127.0.0.2:26379")
.setPassword("yourpassword");
return Redisson.create(config);
}
useSentinelServers()
: 配置 Redisson 使用哨兵模式进行连接。它会自动从哨兵节点获取 Redis 主节点的信息,并进行主从切换。setMasterName("mymaster")
: 指定主节点名称(和 Spring Boot 配置中的spring.redis.sentinel.master
一致)。addSentinelAddress("redis://127.0.0.1:26379", "redis://127.0.0.2:26379")
: 设置 Redis 哨兵节点的地址。setPassword("yourpassword")
: 设置 Redis 密码。
作用:
Redisson 使用 Redis 哨兵模式来提供高可用性,支持自动的故障切换和重新连接。
4. 集群模式
application.properties 配置:
java
spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.2:6379,127.0.0.3:6379
spring.redis.password=yourpassword
spring.redis.cluster.nodes
: 配置 Redis 集群的节点列表。每个节点都是 Redis 集群的一部分,集群中的节点会协同工作提供分片和高可用性。spring.redis.password
: 如果 Redis 集群配置了密码,您可以在此处指定。
作用:
Spring Boot 会根据配置自动连接到 Redis 集群,并提供分片和高可用性支持。通过 RedisClusterConfiguration
,Spring Boot 能够管理 Redis 集群的连接。
RedissonClient 配置:
java
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useClusterServers()
.addNodeAddress("redis://127.0.0.1:6379", "redis://127.0.0.2:6379", "redis://127.0.0.3:6379")
.setPassword("yourpassword");
return Redisson.create(config);
}
useClusterServers()
: 配置 Redisson 使用 Redis 集群模式。它会自动发现 Redis 集群的节点,并连接到集群中的各个节点。addNodeAddress("redis://127.0.0.1:6379", "redis://127.0.0.2:6379", "redis://127.0.0.3:6379")
: 设置 Redis 集群节点的地址。通常配置多个节点地址以支持 Redis 集群中的所有分片。setPassword("yourpassword")
: 配置 Redis 集群的密码。
作用:
Redisson 使用 Redis 集群模式提供分片和高可用性支持,可以处理更大的数据量和更高的负载。
总结
部署模式 | RedisTemplate 配置 | RedissonClient 配置 |
---|---|---|
单机模式 | 使用 spring.redis.host 和 spring.redis.port 配置 |
使用 useSingleServer() 配置单机 Redis 地址 |
主从模式 | 默认不支持,需通过 LettuceConnectionFactory 手动配置 |
使用 useMasterSlaveServers() 配置主从节点地址 |
哨兵模式 | 使用 spring.redis.sentinel 配置主从节点 |
使用 useSentinelServers() 配置哨兵节点和主节点 |
集群模式 | 使用 spring.redis.cluster.nodes 配置集群节点 |
使用 useClusterServers() 配置集群节点地址 |