redis 3.0 集群__使用

参考文档

http://redis.readthedocs.org/en/latest/topic/cluster-tutorial.html#id5

http://blog.csdn.net/myrainblues/article/details/25881535

集群的客户端命令为 redis-cli -c -p 7000 , 必须带  -c 否则认为是普通的redis客户端

普通命令测试如下

检查slave 和 master的关系 , slave 和 master 是主从关系,实时备份, 这是跟 codis 的一个很大的不同,codis 的 slave 和 master 数据不同步,属于主备关系

同样不支持 mget 这种批量处理类型的命令

所有的master 节点 相对于客户端而言是等价的,如下图

客户端 Jedis 的使用 ( Jedis 2.6.2 版本)

    @Test
    public void testRedis300() {
        Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();  
        jedisClusterNodes.add(new HostAndPort("192.168.10.229", 7001));  
        //jedisClusterNodes.add(new HostAndPort("192.168.10.229", 7002));  
        //jedisClusterNodes.add(new HostAndPort("192.168.10.229", 7003));  
        JedisCluster jc = new JedisCluster( jedisClusterNodes );
        String t1 = jc.get("t_1");
        System.out.println("t=" + t1);
        
        Map<String, JedisPool> map = jc.getClusterNodes();
        for ( String k:  map.keySet()) {
            Jedis jedis = null;
            JedisPool p = map.get( k );
            try {
                jedis = p.getResource();
                t1 = p.getResource().get("t_1");
            } catch (Exception e) {
                p.returnBrokenResource( jedis );
                jedis = null;
                // TODO: handle exception
            } finally{
                if( jedis != null ){
                    p.returnResource( jedis );
                }
            }
            System.out.println("k=" + k + ",t1=" + t1);
        }
        Assert.assertTrue(true);
    }
    

结果如下

t=1
k=192.168.10.229:7006,t1=1
k=192.168.10.229:7001,t1=1
k=192.168.10.229:7004,t1=1
k=192.168.10.229:7005,t1=1
k=192.168.10.229:7002,t1=1
k=192.168.10.229:7003,t1=1

jedis客户端的坑.

1)cluster环境下redis的slave不接受任何读写操作,

2)client端不支持keys批量操作,不支持select dbNum操作,只有一个db:select 0

3)JedisCluster 的info()等单机函数无法调用,返回(No way to dispatch this command to Redis Cluster)错误,.

4)JedisCluster 没有针对byte[]的API,需要自己扩展(附件是我加的基于byte[]的BinaryJedisCluster  api)

原文地址:https://www.cnblogs.com/zyguo/p/4402639.html