| 此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Redis 3.5.3! | 
连接模式
Redis 可以在各种设置中运行。每种作模式都需要特定的配置,以下部分将对此进行说明。
Redis 独立版
最简单的入门方法是将 Redis Standalone 与单个 Redis 服务器一起使用,
配置LettuceConnectionFactory或JedisConnectionFactory,如以下示例所示:
@Configuration
class RedisStandaloneConfiguration {
  /**
   * Lettuce
   */
  @Bean
  public RedisConnectionFactory lettuceConnectionFactory() {
    return new LettuceConnectionFactory(new RedisStandaloneConfiguration("server", 6379));
  }
  /**
   * Jedis
   */
  @Bean
  public RedisConnectionFactory jedisConnectionFactory() {
    return new JedisConnectionFactory(new RedisStandaloneConfiguration("server", 6379));
  }
}写入主服务器,从副本读取
Redis 主/副本设置(无需自动故障转移(有关自动故障转移,请参阅:Sentinel)——不仅允许将数据安全地存储在更多节点上。它还允许通过使用 Lettuce 从副本读取数据,同时将写入推送到主节点。您可以使用以下命令设置要使用的读/写策略LettuceClientConfiguration,如以下示例所示:
@Configuration
class WriteToMasterReadFromReplicaConfiguration {
  @Bean
  public LettuceConnectionFactory redisConnectionFactory() {
    LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
      .readFrom(REPLICA_PREFERRED)
      .build();
    RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration("server", 6379);
    return new LettuceConnectionFactory(serverConfig, clientConfig);
  }
}| 对于通过 INFO命令(例如,在使用 AWS 时),使用RedisStaticMasterReplicaConfiguration而不是RedisStandaloneConfiguration. 请注意RedisStaticMasterReplicaConfiguration不支持 Pub/Sub,因为缺少跨各个服务器的 Pub/Sub 消息传播。 | 
Redis 哨兵
为了处理高可用性 Redis,Spring Data Redis 支持 Redis Sentinel,使用RedisSentinelConfiguration,如以下示例所示:
/**
 * Lettuce
 */
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
  RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
  .master("mymaster")
  .sentinel("127.0.0.1", 26379)
  .sentinel("127.0.0.1", 26380);
  return new LettuceConnectionFactory(sentinelConfig);
}
/**
 * Jedis
 */
@Bean
public RedisConnectionFactory jedisConnectionFactory() {
  RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
  .master("mymaster")
  .sentinel("127.0.0.1", 26379)
  .sentinel("127.0.0.1", 26380);
  return new JedisConnectionFactory(sentinelConfig);
}| 
 配置属性 
 | 
有时,需要与其中一名哨兵直接互动。 用RedisConnectionFactory.getSentinelConnection()或RedisConnection.getSentinelCommands()允许您访问配置的第一个活动 Sentinel。
Redis 集群
集群支持基于与非集群通信相同的构建块。RedisClusterConnection,扩展到RedisConnection,处理与 Redis 集群的通信,并将错误转换为 Spring DAO 异常层次结构。RedisClusterConnection实例是使用RedisConnectionFactory,必须使用关联的RedisClusterConfiguration,如以下示例所示:
@Component
@ConfigurationProperties(prefix = "spring.redis.cluster")
public class ClusterConfigurationProperties {
    /*
     * spring.redis.cluster.nodes[0] = 127.0.0.1:7379
     * spring.redis.cluster.nodes[1] = 127.0.0.1:7380
     * ...
     */
    List<String> nodes;
    /**
     * Get initial collection of known cluster nodes in format {@code host:port}.
     *
     * @return
     */
    public List<String> getNodes() {
        return nodes;
    }
    public void setNodes(List<String> nodes) {
        this.nodes = nodes;
    }
}
@Configuration
public class AppConfig {
    /**
     * Type safe representation of application.properties
     */
    @Autowired ClusterConfigurationProperties clusterProperties;
    public @Bean RedisConnectionFactory connectionFactory() {
        return new LettuceConnectionFactory(
            new RedisClusterConfiguration(clusterProperties.getNodes()));
    }
}| 
 配置属性 
 | 
| 初始配置将驱动程序库指向一组初始集群节点。实时集群重新配置产生的更改仅保留在本机驱动程序中,不会写回配置。 |