首页 > 其他 > 详细

jedis客户端连接redis cluster代码

时间:2016-03-24 02:07:05      阅读:667      评论:0      收藏:0      [点我收藏+]

上一篇redis中,讲解了redis cluster集群,但是却没有涉及到客户端代码,这次就一起来看下如何通过jedis使用redis cluster。

?

在此之前,需要说一个坑,上一篇中,我们将cluster中每个节点的ip:port配置成了如127.0.0.1:7000这样的形式。

但是,由于集群内部存取时,需要确定key所在的slot,一旦不是在我们登录的节点上,就会有内部转发,如下:

127.0.0.1:7000> set a 10
-> Redirected to slot [15495] located at 127.0.0.1:7003
OK
127.0.0.1:7003> get c
-> Redirected to slot [7365] located at 127.0.0.1:7001
"10"
127.0.0.1:7001>

可见,set之后我们的登录的redis地址成了127.0.0.1:7003,当我们进行远程操作时,便会发生"Connection refused"错误。所以,我们需要将节点配置成192.168.xx.xx:port这样的形式才行。

?

spring对于redis cluster的支持目前在spring-data-redis-1.7.0RC1中,不知道离发布还有多久,需要的朋友可以从spring-data-redis文档先用着。

为了代码方便,就不采用xml和properties文件了,首先添加jedis的jar:

// pom.xml
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.8.1</version>
</dependency>

?

?

由于我们都用spring开发,那么便需要配置bean:

@Configuration
public class RedisConfig {

    @Bean
    public JedisCluster jedisCluster (){
        Set<HostAndPort> set = new HashSet<>();
        set.add(new HostAndPort("192.168.0.21", 7001));
        set.add(new HostAndPort("192.168.0.21", 7002));
        set.add(new HostAndPort("192.168.0.21", 7003));
        set.add(new HostAndPort("192.168.0.21", 7004));
        JedisCluster jedisCluster = new JedisCluster(set);
        return jedisCluster;
    }

}

我们并不需要配置这么多节点,1个就可以,这里是为了防止个别节点挂掉。

对于JedisCluster的bean,大家可以通过properties和xml文件配置,为了方便阅读,这里就不用了(? ???ω??? ?)

?

以上,一个简单的jedis连接redis cluster客户端就完成了。

?

下面可以测试一下:

@Configuration
@ComponentScan(basePackages = "config") // RedisConfig所在package
public class RedisClusterTest {

	@Test
	public void testCluster (){
		ApplicationContext ctx = new AnnotationConfigApplicationContext(RedisClusterTest.class);
		JedisCluster jedisCluster = ctx.getBean(JedisCluster.class);
		jedisCluster.set("redisCluster4Test", "2016-3-22");
		String value = jedisCluster.get("redisCluster4Test");
		System.out.println(value);
	}
	
}

运行后输出 2016-3-22,至此就完成了客户端的基本要求。

?

关于jedis的更多操作,网上有很多,只要对redis的操作足够熟悉,通过方法名大家就能知道对应的操作。

?

另外,对于redis-trib.rb,它建立cluster时并没有为我们提供password的功能,所以,你的集群节点不能有password,因此使用的时候还需要考虑。

?

jedis客户端连接redis cluster代码

原文:http://zk-chs.iteye.com/blog/2285794

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!