redis集群手动搭建

2019-11-15  本文已影响0人  快点给我想个名
手动搭建
配置
port 6379
cluster-enabled yes
daemonize yes
logfile "/usr/local/redis-4.0.14/log/cluster.log"
cluster-node-timeout 15000
cluster-config-file "nodes-6379.conf"
redis-server cluster.conf
cluster meet 192.168.6.129 6379
cluster meet 192.168.6.130 6379
redis-cli -h 192.168.6.128 -p 6379 cluster addslots {0..5461}
redis-cli -h 192.168.6.129 -p 6379 cluster addslots {5462..10922}
redis-cli -h 192.168.6.130 -p 6379 cluster addslots {10923..16383}

分配完成后可以在任一一台机器上执行命令cluster nodes查看信息如下:

127.0.0.1:6379> cluster nodes
7bac8551f8dbea1333a4f11c1bf95b662400e341 192.168.6.130:6379@16379 master - 0 1573804584127 2 connected 10923-16383
6879f2a77478e17cbc736db2e14bd991f51035b7 192.168.6.129:6379@16379 master - 0 1573804582114 1 connected 5462-10922
f8aa632b89060703599a33fadde7f242b13d81de 192.168.6.128:6379@16379 myself,master - 0 1573804579000 0 connected 0-5461
java客户端

示例代码如下:

public class ClusterTest {

    public static void main(String[] args) {

        JedisCluster jedisCluster = null;
        try {
            HostAndPort hostAndPort1 = new HostAndPort("192.168.6.128",6379);
            HostAndPort hostAndPort2 = new HostAndPort("192.168.6.129",6379);
            HostAndPort hostAndPort3 = new HostAndPort("192.168.6.130",6379);

            Set<HostAndPort> set = new HashSet<>(4);
            set.add(hostAndPort1);
            set.add(hostAndPort2);
            set.add(hostAndPort3);
            jedisCluster = new JedisCluster(set);

            for(int i = 1;i < 10;i++){
                jedisCluster.set(String.valueOf(i),String.valueOf(i));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedisCluster != null){
                jedisCluster.close();
            }
        }
    }
}
redis集群注意事项
  1. key批量操作支持有限。如mset、mget,目前只支持具有相同slot值的 key执行批量操作。对于映射为不同slot值的key由于执行mget、mget等操作可能存在于多个节点上因此不被支持。
  2. key事务操作支持有限。同理只支持多key在同一节点上的事务操作,当多个key分布在不同的节点上时无法使用事务功能。
  3. key作为数据分区的最小粒度,因此不能将一个大的键值对象如hash、list等映射到不同的节点。
  4. 不支持多数据库空间。单机下的Redis可以支持16个数据库,集群模式下只能使用一个数据库空间,即db0。
  5. 复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构。

内容来源:《Redis开发与运维》

上一篇 下一篇

猜你喜欢

热点阅读