首先创建一个RedisConfig类,用来操作redis的各种参数
public class RedisConfig {
//可用连接实例的最大数目,默认值为8;
//如果复制为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)
public static int MAX_ACTIVE = 1024;
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也为8.
public static int MAX_IDLE = 200;
//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出
//JedisConnectionException;
public static int MAX_WAIT = 10000;
public static int TIMEOUT = 10000;
public static int RETRY_NUM = 5;
}
然后写一个工具类做对Jedis的简单封装:
public class JedisUtil {
private Logger logger = Logger.getLogger(this.getClass().getName());
private JedisUtil(){
}
private static class RedisUtilHolder{
private static final JedisUtil instance = new JedisUtil();
}
public static JedisUtil getInstance() {
return RedisUtilHolder.instance;
}
private static Map<String,JedisPool> maps = new HashMap<String, JedisPool>();
private static JedisPool getPool(String ip, int port) {
String key = ip + ":" + port;
JedisPool pool = null;
if(!maps.containsKey(key)) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(RedisConfig.MAX_ACTIVE);
config.setMaxIdle(RedisConfig.MAX_IDLE);
config.setMaxWait(RedisConfig.MAX_WAIT);
config.setTestOnBorrow(true);
config.setTestOnReturn(true);
pool = new JedisPool(config,ip,port,RedisConfig.TIMEOUT);
maps.put(key, pool);
} else {
pool = maps.get(key);
}
return pool;
}
public Jedis getJedis(String ip, int port) {
Jedis jedis = null;
int count = 0;
do{
try{
jedis = getPool(ip,port).getResource();
} catch(Exception e) {
logger.error("get redis Master1 failed", e);
getPool(ip,port).returnBrokenResource(jedis);
}
} while (jedis == null && count<RedisConfig.RETRY_NUM);
return jedis;
}
public static void main(String[] args) {
JedisUtil ju = new JedisUtil();
Jedis jedis = ju.getJedis("0", 0);
jedis.set("fdf", "fdf");
}
}
这个方法中可以通过JedisPool获取到Jedis资源,完成这些后就可以用一个测试类进行测试了。方法:
jedis.flushDB():清空数据
jedis.exists("key"):
jedis.set("key","key");
jedis.exist("key");
Set<String> keys = jedis.keys("*");系统中所有的键
jedis.del("key");
jedis.expire("key",5):设置某个键的过期时间为5s
jedis.ttl("key"):查看某个键的声誉生存时间
jedis.persist("key"):移除某个键的生存时间
jedis.type("key"):查看某个键所存值的类型