Spring Data RedisでSentinelに接続する

可用性を確保するためにRedis+Sentinelを利用している場合は、
クライアントアプリケーションから直接Redisのマスタを参照せずにクライアントライブラリに対して
Sentinelのノード情報を教えてあげることでマスターがFail overしたときに自動的にクライントが
Fail overに追従できます。
Spring Data Redisを使ってSentinelの設定を行う方法を説明ましす。
参考(5.4. Redis Sentinel Support):
http://docs.spring.io/spring-data/redis/docs/current/reference/html/#redis:sentinel

@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);
}

こうすることでクラスタの名前(mymaster)とSentinelのノード(普通は3台以上)を定義できますが、
ハードコーディングはしませんよね?

application.propertiesに定義できます。

spring.redis.sentinel.master: mymaster

spring.redis.sentinel.nodes: 127.0.0.1:26379,127.0.0.1:26380

設定ファイルにsentinelの情報を逃すとSpringが設定情報を注入してくれます。

@Bean
public RedisConnectionFactory jedisConnectionFactory() {
  return new JedisConnectionFactory();
}