iamstar 发表于 2015-11-12 14:04:43

Redis-Jedis工作笔记-jedis 按数据库分片

  redis版本 :3.0.100-alphal
  jedis版本:2.7.3
  直接上代码,在代码中作解释:
package com.redis;
import java.util.ArrayList;
import java.util.List;

import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

public class JedisShardTest {

    public static void main(String args[]) {

      List<JedisShardInfo> shardList = new ArrayList<JedisShardInfo>();

      // Jedis连接池

      JedisPoolConfig config = new JedisPoolConfig();

      // 最大空闲连接数

      config.setMaxIdle(8);

      // 最大连接数

      config.setMaxTotal(8);

      // 获取连接是的最大等待时间,如果超时就抛出异常

      config.setMaxWaitMillis(1000);

      // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;

      config.setTestOnBorrow(false);

      config.setTestOnReturn(true);

      // 通过URI的方式构造JedisShardInfo对象。原因:因为我是在同一个redis
      // 实例中用不同的数据库做的分片所以需要对JedisShardInfo中的数据库名进行赋值 (JedisShardInfo中有个私有属性
      // db其默认值是0,但是这个属性不提供set方法,所以只能通过这种方式进行赋值)。当然此处的host和port也可以不相同

      JedisShardInfo infoA = new JedisShardInfo(&quot;http://127.0.0.1:6379/10&quot;);
      JedisShardInfo infoB = new JedisShardInfo(&quot;http://127.0.0.1:6379/11&quot;);
      // userInfo:pwd 是redis服务器的密码 userInfo
      // 是固定写法,pwd是redis服务器密码密码。如果redis没有密码则按照上面给出的方法构造JedisShardInfo对象

      // JedisShardInfo infoA = new
      // JedisShardInfo(&quot;http://userInfo:pwd@127.0.0.1:6379/12&quot;);
      shardList.add(infoA);
      shardList.add(infoB);
      ShardedJedisPool pool = new ShardedJedisPool(config, shardList);

      ShardedJedis sJedis = pool.getResource();
      for (int i = 0; i < 1000; i&#43;&#43;) {
            sJedis = pool.getResource();
            sJedis.set(&quot;key&quot; &#43; i, &quot;v&quot; &#43; i);
            System.out.println(&quot;key=&quot; &#43; sJedis.get(&quot;key&quot; &#43; i));
            // 将连接池的连接收回,此方法在jedis-2.7.3中已经标注过期,如果用jdk1.7的话可以使用try-with-resources进行资源的释放和回收
            pool.returnResource(sJedis);
            ;
      }

    }
}

  

  

         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Redis-Jedis工作笔记-jedis 按数据库分片