Redis-Jedis工作笔记-jedis 按数据库分片
redis版本 :3.0.100-alphaljedis版本: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("http://127.0.0.1:6379/10");
JedisShardInfo infoB = new JedisShardInfo("http://127.0.0.1:6379/11");
// userInfo:pwd 是redis服务器的密码 userInfo
// 是固定写法,pwd是redis服务器密码密码。如果redis没有密码则按照上面给出的方法构造JedisShardInfo对象
// JedisShardInfo infoA = new
// JedisShardInfo("http://userInfo:pwd@127.0.0.1:6379/12");
shardList.add(infoA);
shardList.add(infoB);
ShardedJedisPool pool = new ShardedJedisPool(config, shardList);
ShardedJedis sJedis = pool.getResource();
for (int i = 0; i < 1000; i++) {
sJedis = pool.getResource();
sJedis.set("key" + i, "v" + i);
System.out.println("key=" + sJedis.get("key" + i));
// 将连接池的连接收回,此方法在jedis-2.7.3中已经标注过期,如果用jdk1.7的话可以使用try-with-resources进行资源的释放和回收
pool.returnResource(sJedis);
;
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
页:
[1]