当前redis版本(2.4.8)并不支持集群,但是jedis通过内置路由树的模式,对redis进行了简单的sharding,此时池内每个连接对象对应多个redis实例连接,示例代码如下:
package
com.suning.framework.sample.jedis.shardedpool;import
java.util.ArrayList;import
redis.clients.jedis.JedisPoolConfig;import
redis.clients.jedis.JedisShardInfo;import
redis.clients.jedis.ShardedJedis;import
redis.clients.jedis.ShardedJedisPool;/** * * 功能描述: jedis中的ShardedJedisPool为ShardeJedis的池实现 * 每个ShardedJedis中内置了路由树,可针对多个Redis实例进行路由 * */public
class ShardedJedisPoolTester { public
static void
main(String[] args) { // 配置jedis连接池的基本属性 JedisPoolConfig jedisPoolConfig =
new JedisPoolConfig(); jedisPoolConfig.setMaxActive(50);//设置最大连接数 jedisPoolConfig.setMaxIdle(10);//设置池中最大空闲连接数 jedisPoolConfig.setMaxWait(2000);//设置获取连接最大等待时长 jedisPoolConfig.setTestOnBorrow(true);//设置获取连接前是否进行连接测试 //配置sharding服务器信息 ArrayList<JedisShardInfo> shardInfoList =
new ArrayList<JedisShardInfo>(); shardInfoList.add(
new JedisShardInfo("localhost",6379,"server_6379")); shardInfoList.add(
new JedisShardInfo("localhost",6380,"server_6380")); //根据连接池基本配置信息及sharding服务器信息列表,生成切片连接池 ShardedJedisPool jedisPool =
new ShardedJedisPool(jedisPoolConfig, shardInfoList); ShardedJedis jedis =
null; try
{ // 从连接池中获取连接 jedis = jedisPool.getResource(); // 执行redis操作 jedis.set("name",
"xiexu"); // 执行redis操作 String value = jedis.get("name"); System.out.println(value); }
catch (Exception ex) { }
finally { // 释放jedis连接,而非断开连接 jedisPool.returnResource(jedis);}
}}
Jedis 分片示例
404

被折叠的 条评论
为什么被折叠?



