java 有多个redis 驱动, 以jedis 为例。
1.首先获取链接池:
private static JedisPool pool = null;
static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(total); // 最大链接
config.setMaxWaitMillis(waitMillis); //等待时间
config.setMaxIdle(maxIdle); // 最大空闲时间
config.setTimeBetweenEvictionRunsMillis(runMillis); //回收链接的间隔
/**
* used at Server without auth
*/
pool = new JedisPool(config, host, port);
/**
* used at Server with auth
*/
//pool = new JedisPool(config, host, port, Protocol.DEFAULT_TIMEOUT, auth);
}
更多配置可以在 JedisPoolConfig类里面找到具体内容。
2. 开发获取回收接口
/**
* 获取jedis 实例
* @return
*/
public static Jedis getRedis() {
return pool.getResource();
}
/**
* 返回jedis 实例
*/
public static void returnRedis(Jedis jed){
pool.returnResource(jed);
}
public static void returnBrokenRedis(Jedis jed){
pool.returnBrokenResource(jed);
}
如果在操作redis 的时候发生了异常,一定要调用returnBrokenRedis. 否则下次获取的instance 可能含有上次操作的脏数据, 报一些 莫名其妙的类型转化错误
3. 操作redis 的api, 参看:http://redis.readthedocs.org/en/latest/ 。 基本上所有redis 的操作,都有对应的java方法
比如: hlen(key) 对应的方法是: instance.hlen(String)
多个操作,可以用pipe
<span style="white-space:pre"> </span>Pipeline pipelined = redis.pipelined();
pipelined.set("key1", "val1");
pipelined.set("key2", "val2");
pipelined.set("key3", "val3");
pipelined.sync();