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
*
*/
public class MyJedisPool {
//jedis池
private static JedisPool pool;
//shardedJedis池
private static ShardedJedisPool shardPool;
//静态代码初始化池配置
static {
//加载redis配置文件
ResourceBundle bundle = ResourceBundle.getBundle("redis");
if (bundle == null) {
throw new IllegalArgumentException("[redis.properties] is not found!");
}
//创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
int maxActivity = Integer.valueOf(bundle.getString("redis.pool.maxActive"));
int maxIdle = Integer.valueOf(bundle.getString("redis.pool.maxIdle"));
long maxWait = Long.valueOf(bundle.getString("redis.pool.maxWait"));
boolean testOnBorrow = Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow"));
boolean onreturn = Boolean.valueOf(bundle.getString("redis.pool.testOnReturn"));
//设置池配置项值
config.setMaxActive(maxActivity);
config.setMaxIdle(maxIdle);
config.setMaxWait(maxWait);
config.setTestOnBorrow(testOnBorrow);
config.setTestOnReturn(onreturn);
//根据配置实例化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池方法
*/
public static void test1(){
//从jedis池中获取一个jedis实例
Jedis jedis = pool.getResource();
//获取jedis实例后可以对redis服务进行一系列的操作
jedis.set("name", "jack");
System.out.println(jedis.get("name"));
jedis.del("name");
System.out.println(jedis.exists("name"));
//释放对象池,即获取jedis实例使用后要将对象还回去
pool.returnResource(jedis);
}
/**
* 测试shardedJedis池方法
*/
public static void test2(){
//从shard池中获取shardJedis实例
ShardedJedis shardJedis = shardPool.getResource();
//向redis服务插入两个key-value对象
shardJedis.set("aaa", "jackson_aaa");
System.out.println(shardJedis.get("aaa"));
shardJedis.set("zzz", "jackson_zzz");
System.out.println(shardJedis.get("zzz"));
//释放资源
shardPool.returnResource(shardJedis);
}
public static void main(String[] args) {
//test1();//执行test1方法
test2();//执行test2方法
}
}
配置文件
########jedis##pool#############
#IP#redis1 server host#
redis.ip=192.168.1.234
redis1.ip=192.168.1.234
#IP#redis2 server host#
redis2.ip=192.168.1.235
#Port#redis server port#
redis.port=6379
redis.pool.maxActive=1024
redis.pool.maxIdle=200
redis.pool.maxWait=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true