一、接口封装
我们开发的时候可能使用单机版redis,项目上线的时候可能使用集群版redis。那么,我们从开发到上线的过程中需要改代码吗?
这样引出面向接口编程的好处。我们在使用的地方,调用的是接口的方法,这样,不同实现类切换的时候,方法调用的地方不需要改变。
1.1 接口定义
public interface JedisClient {
String set(String key, String value);
String get(String key);
Boolean exists(String key);
Long expire(String key, int seconds);
Long ttl(String key);
Long incr(String key);
Long hset(String key, String field, String value);
String hget(String key, String field);
Long hdel(String key, String... field);
Boolean hexists(String key, String field);
List<String> hvals(String key);
Long del(String key);
}
1.2 单机版实现类
public class JedisClientPool implements JedisClient {
private JedisPool jedisPool;
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
@Override
public String set(String key, String value) {
Jedis jedis = jedisPool.getResource();
String result = jedis.set(key, value);
jedis.close();
return result;
}
@Override
public String get(String key) {
Jedis jedis = jedisPool.getResource();
String result = jedis.get(key);
jedis.close();
return result;
}
@Override
public Boolean exists(String key) {
Jedis jedis = jedisPool.getResource();
Boolean result = jedis.exists(key);
jedis.close();
return result;
}
@Override
public Long expire(String key, int seconds) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.expire(key, seconds);
jedis.close();
return result;
}
@Override
public Long ttl(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.ttl(key);
jedis.close();
return result;
}
@Override
public Long incr(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.incr(key);
jedis.close();
return result;
}
@Ov

本文介绍了如何通过面向接口编程的方式,实现使用JedisClient连接Redis的单机版和集群版。详细讲解了接口定义、单机版实现类和集群版实现类的创建,并提供了配置文件的修改建议,以实现不同环境下的无缝切换。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



