Redis四种模式在Spring Boot框架下的配置

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.hostspring.redis.port 配置 使用 useSingleServer() 配置单机 Redis 地址
主从模式 默认不支持,需通过 LettuceConnectionFactory 手动配置 使用 useMasterSlaveServers() 配置主从节点地址
哨兵模式 使用 spring.redis.sentinel 配置主从节点 使用 useSentinelServers() 配置哨兵节点和主节点
集群模式 使用 spring.redis.cluster.nodes 配置集群节点 使用 useClusterServers() 配置集群节点地址
相关推荐
@_@哆啦A梦5 小时前
Redis 基础命令
java·数据库·redis
gentle coder7 小时前
Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析
java·redis·分布式
萝卜青今天也要开心7 小时前
读书笔记-《Redis设计与实现》(一)数据结构与对象(下)
java·数据结构·redis·学习
java1234_小锋9 小时前
说说Redis的内存淘汰策略?
数据库·redis·缓存
2的n次方_13 小时前
【Redis】set 和 zset 类型的介绍和常用命令
数据库·redis·缓存
桂月二二17 小时前
使用 Redis Streams 实现高性能消息队列
数据库·redis·缓存
biubiubiu07061 天前
Redisson
redis
maply1 天前
Redis 消息队列详解
数据库·redis·缓存
java1234_小锋1 天前
怎么实现Redis的高可用?
数据库·redis·缓存
�时过境迁,物是人非2 天前
Redis地理散列GeoHash
前端·redis·bootstrap