zoukankan      html  css  js  c++  java
  • Jedis-cluster原理分析

    连接方式

    Set<HostAndPort> hostAndPorts=new HashSet<>();
    HostAndPort hostAndPort=new HostAndPort("192.168.11.153",7000);
    HostAndPort hostAndPort1=new HostAndPort("192.168.11.153",7001);
    HostAndPort hostAndPort2=new HostAndPort("192.168.11.154",7003);
    HostAndPort hostAndPort3=new HostAndPort("192.168.11.157",7006);
    hostAndPorts.add(hostAndPort);
    hostAndPorts.add(hostAndPort1);
    hostAndPorts.add(hostAndPort2);
    hostAndPorts.add(hostAndPort3);
    JedisCluster jedisCluster=new JedisCluster(hostAndPorts,6000);
    jedisCluster.set("mic","hello");

    原理分析

    程序启动初始化集群环境

    1)、读取配置文件中的节点配置,无论是主从,无论多少个,只拿第一个,获取redis连接实例

    2)、用获取的redis连接实例执行clusterNodes()方法,实际执行redis服务端cluster nodes命令,获取主从配置信

    3)、解析主从配置信息,先把所有节点存放到nodes的map集合中,key为节点的ip:port,value为当前节点的

    jedisPool

    4)、解析主节点分配的slots区间段,把slot对应的索引值作为key,第三步中拿到的jedisPool作为value,存储在

    slots的map集合中

    就实现了slot槽索引值与jedisPool的映射,这个jedisPool包含了master的节点信息,所以槽和几点是对应的,与

    redis服务端一致

    从集群环境存取值

    1)、把key作为参数,执行CRC16算法,获取key对应的slot值

    2)、通过该slot值,去slots的map集合中获取jedisPool实例

    3)、通过jedisPool实例获取jedis实例,最终完成redis数据存取工作

  • 相关阅读:
    阿里云slb实现多域名https
    docker容器互连
    ext4文件系统(转)
    Effective Java 读书笔记(四):泛型
    Effective Java 读书笔记(一):创建和销毁对象
    Effective Java 读书笔记(三):类与接口
    Effective Java 读书笔记(二):对象通用方法
    三种TCP协议聊天室实现
    WebSocket协议探究(三):MQTT子协议
    WebSocket协议探究(二)
  • 原文地址:https://www.cnblogs.com/yintingting/p/11701439.html
Copyright © 2011-2022 走看看