Jedis 是 Redis 官方首选的 Java 客户端开发包,相信很多人都会使用这个开发包来操作Redis。
但是呢这有一个问题就是每次操作之后都必须调用close方法来关闭避免应用卡死。
下面我们就通过封装Jedis来实现自动调用close
首先定义一个interface类,用于操作Jedis
interface Caller {
public void call(Jedis jedis);
}
然后对Jedis以及连接池进行简单的封装
public class Redis {
private JedisPool pool;
public Redis() {
this.pool = new JedisPool();
}
public void execute(Caller caller) {
Jedis jedis = pool.getResource();
try {
caller.call(jedis);
} catch (JedisConnectionException e) {
caller.call(jedis); // 重试一次
} finally {
jedis.close();
}
}
}
封装之后就可以使用了
public class JedisTest {
public static void main(String[] args) {
RedisPool redis = new RedisPool();
redis.execute(new Caller() {
@Override
public void call(Jedis jedis) {
// do something with jedis
}
});
}
}
上述的使用方法还是稍微有点麻烦的,因为调用execute方法还需要执行回调。但是如果你使用的是Java 8及以上的话就可以Lambda表达式。
使用Lambda表达式:
redis.execute(jedis->{
// do something with jedis
});
完事!!