美文网首页
redis集群手动搭建

redis集群手动搭建

作者: 快点给我想个名 | 来源:发表于2019-11-15 17:49 被阅读0次
    手动搭建
    配置
    • 在3台服务器的redis目录下新建cluster.conf配置文件,内容如下
    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
    
    • 节点握手
      在任一一台服务器上执行以下命令,这里以128服务器为例
    cluster meet 192.168.6.129 6379
    cluster meet 192.168.6.130 6379
    
    • 分配槽
      在任一一台服务器上执行以下命令,这里以128服务器为例
    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开发与运维》

    相关文章

      网友评论

          本文标题:redis集群手动搭建

          本文链接:https://www.haomeiwen.com/subject/cubsictx.html