zoukankan      html  css  js  c++  java
  • ShardedJedis的使用

    假定有2个 redis 服务实例(A和B)在运行,在客户端进行 set 操作:

    set a0 xxx

    set a1 xxx

    set a2 xxx

    set a3 xxx

    我们希望a0, a1, a2, a3 分散保存在A和B中。

    jedis 已经提供了这种功能:

    <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
        <constructor-arg index="0">
            <bean class="redis.clients.jedis.JedisPoolConfig"></bean>
        </constructor-arg>
        <constructor-arg index="1">
            <list>
                <bean class="redis.clients.jedis.JedisShardInfo">
                    <constructor-arg name="host" value="192.168.233.8"/>
                    <constructor-arg name="port" value="6381"/>
                </bean>
                <bean class="redis.clients.jedis.JedisShardInfo">
                    <constructor-arg name="host" value="192.168.233.8"/>
                    <constructor-arg name="port" value="6379"/>
                </bean>
            </list>
        </constructor-arg>
    </bean>

    测试代码:

    ShardedJedisPool pool = ctx.getBean(ShardedJedisPool.class);
    StringBuilder sb = new StringBuilder();
    sb.append('a');
    for (int i = 0; i < 100; i++) {
        ShardedJedis jedis1 = pool.getResource();
        if (i > 0) {
            sb.delete(1, sb.length());
        }
        sb.append(i);
        System.out.println(sb.toString());
        Thread.sleep(1000);
        jedis1.set(sb.toString(), "ifuck");
        jedis1.close(); //记得关闭
    }

    这种思路是在客户端进行分片,但是如果分片服务器挂了呢?一致性哈希?

    现有A和B两个redis服务实例。

    如果B挂掉:

    假定在xml文件中,JedisShardInfo list的配置顺序为A,B,当B挂掉后,我们需要创建另一个redis服务实例C,

    然后把B的数据拷贝到C的目录下,然后启动C,再将JedisShardInfo list的配置改为A,C。

    如果想把A B扩容成A B C:

    这会造成部分数据的重新分片。

  • 相关阅读:
    Spring.Net框架与WCF的集成(上)
    重入与回调并发(Reentrant & CallbackConcurrency )
    WCF中的异步实现
    WCF开发时如何选择正确的实例模式(InstanceMode)?
    WCF实例与并发
    WCF消息可靠性与有序传递
    WCF实际应用之IParameterInspector扩展
    WCF中几个基本知识点整理
    HTTP与Tcp协议下双工通信的差异
    细说WCF中的会话模式
  • 原文地址:https://www.cnblogs.com/allenwas3/p/7826420.html
Copyright © 2011-2022 走看看