package com.jedis;
import java.util.LinkedList;
import java.util.List;
import java.util.ResourceBundle;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
/**
* jedis池使用
*
* @author xmong
*/
publicclass MyJedisPool {
// jedis池
privatestatic JedisPool pool;
// shardedJedis池
privatestatic ShardedJedisPool shardPool;
// 静态代码初始化池配置
static {
// 加载redis配置文件
ResourceBundle bundle = ResourceBundle.getBundle("redis");
if (bundle == null) {
thrownew IllegalArgumentException("[redis.properties] is not found!");
}
// 创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
// 设置池配置项值
config.setMaxActive(Integer.valueOf(bundle.getString("redis.pool.maxActive")));
config.setMaxIdle(Integer.valueOf(bundle.getString("redis.pool.maxIdle")));
config.setMaxWait(Long.valueOf(bundle.getString("redis.pool.maxWait")));
config.setTestOnBorrow(Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean.valueOf(bundle.getString("redis.pool.testOnReturn")));
// 根据配置实例化jedis池
// pool = new JedisPool(config, bundle.getString("redis.ip"),
// Integer.valueOf(bundle.getString("redis.port")));
// 创建多个redis共享服务
JedisShardInfo jedisShardInfo1 = new JedisShardInfo(bundle.getString("redis1.ip"), Integer.valueOf(bundle
.getString("redis.port")));
JedisShardInfo jedisShardInfo2 = new JedisShardInfo(bundle.getString("redis2.ip"), Integer.valueOf(bundle
.getString("redis.port")));
List<JedisShardInfo> list = new LinkedList<JedisShardInfo>();
list.add(jedisShardInfo1);
list.add(jedisShardInfo2);
// 根据配置文件,创建shared池实例
shardPool = new ShardedJedisPool(config, list);
}
/**
* 测试jedis池方法
*/
publicstaticvoid test1() {
// 从jedis池中获取一个jedis实例
Jedis jedis = pool.getResource();
// 获取jedis实例后可以对redis服务进行一系列的操作
jedis.set("name", "xmong");
System.out.println(jedis.get("name"));
jedis.del("name");
System.out.println(jedis.exists("name"));
// 释放对象池,即获取jedis实例使用后要将对象还回去
pool.returnResource(jedis);
}
/**
* 测试shardedJedis池方法
*/
publicstaticvoid test2() {
// 从shard池中获取shardJedis实例
ShardedJedis shardJedis = shardPool.getResource();
// 向redis服务插入两个key-value对象
shardJedis.set("aaa", "xmong_aaa");
System.out.println(shardJedis.get("aaa"));
shardJedis.set("zzz", "xmong_zzz");
System.out.println(shardJedis.get("zzz"));
// 释放资源
shardPool.returnResource(shardJedis);
}
publicstaticvoid main(String[] args) {
// test1();//执行test1方法
test2();// 执行test2方法
}
}
|