JedisPool使用的时候版本不同写法是不一样的,因为官方废弃升级了一些API,下面我们来看看使用的区别:
废弃写法:
public String get(String key) {
Jedis redis = null;
try {
redis = redisPool.getResource();
return redis.get(key);
} catch (JedisConnectionException e) {
if (redis != null) {
redisPool.returnBrokenResource(redis);
redis = null;
}
throw e;
} finally {
if (redis != null) {
redisPool.returnResource(redis);
}
}
}
替代写法:
...
finally {
if (jedis != null) {
jedis.close();
}
}
下面我们来说说Jedis相关的特性,redis.clients.jedis.Jedis这个这个客户端实例不是线程安全的,所以需要自行保证线程安全,redis.clients.jedis.JedisPool连接池是线程安全的,或者说其提供的getResource()方法是线程安全的,所以在封装工具类的时候不需要再使用同步手段了。