我想在我的Redis集群设置中使用Spring Data Redis。
现在在Jedis的纯代码中连接到Redis节点集群,我们必须这样做:
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
jedisClusterNodes.add(new HostAndPort("10.7.2.242", 7003));
jedisClusterNodes.add(new HostAndPort("10.7.2.242", 7004));
jedisClusterNodes.add(new HostAndPort("10.7.2.242", 7005));
System.out.println("jcn set initialised");
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo_first", "bar");
String value = jc.get("foo_first");
System.out.println(value);
这输出到bar
这是正确的。
很明显,为了通过Jedis使用Redis集群,我们必须提供Redis集群主节点的所有IP和端口。
现在来到Spring支持的Redis时,我们有一些选项,比如
JedisConnection
JedisConnectionFactory
RedisTemplate
但实际上这些类中没有一个让我有机会给出带有端口的Ips列表,如上面的示例所示。
我是否遗漏了某些东西,或者有没有办法在Spring Data中处理Redis集群,据我所知,Sentinel和Cluster(纠正我,如果我错了)在实际实现方面有所不同,所以请不要#39; t提供了Sentinels的例子。
提前致谢:)
答案 0 :(得分:5)
尚未将对Redis 3.0集群的支持集成到spring-data-redis中。创建了Jira票证DATAREDIS-315以跟踪此请求。看起来集群功能没有通过Spring使用的JedisConnection / JedisConnectionFactory类公开,因此在您看到此功能完成之前可能需要一段时间。
答案 1 :(得分:5)
Spring会话已经扩展了对现在从1.7.1开始的redis集群的支持。请参考最新的reference document。