在redis单机中用的是JedisCluster。在redis集群中用的是JedisPool。一般来说在开发环境中用单机就可以,而生产的时候就要切换到集群中了。
那么要需要两套代码吗?当然不是我们可以使用策略模式。
创建一个jedisclient接口
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);
}
里面包含redis中的基本操作,然后创建一个JedisCluster类实现接口,其中的属性是jediscluster。集群工具类。然后创建一个JedisClientPool类实现接口,其中的属性是JedisPool。单机工具类。
配置文件中
<!-- 连接redis单机版 -->
<bean id="jedisClientPool" class="cn.e3mall.common.jedis.JedisClientPool">
<property name="jedisPool" ref="jedisPool"></property>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="192.168.56.101" />
<constructor-arg name="port" value="6379" />
</bean>
<!-- 连接redis集群 -->
<bean id="jedisClientCluster" class="cn.e3mall.common.jedis.JedisClientCluster">
<property name="jedisCluster" ref="jedisCluster"/>
</bean>
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.162"></constructor-arg>
<constructor-arg name="port" value="7001"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.162"></constructor-arg>
<constructor-arg name="port" value="7002"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.162"></constructor-arg>
<constructor-arg name="port" value="7003"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.162"></constructor-arg>
<constructor-arg name="port" value="7004"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.162"></constructor-arg>
<constructor-arg name="port" value="7005"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.162"></constructor-arg>
<constructor-arg name="port" value="7006"></constructor-arg>
</bean>
</set>
</constructor-arg>
</bean>
加载配置文件后,直接操作接口就可以了,然后对集群的配置注释,可以切换到单机。对单机的配置注释,就可以切换到集群。
本文介绍如何在Redis单机与集群之间进行切换,避免编写两套代码。通过策略模式,创建一个`jedisclient`接口,分别由`JedisCluster`和`JedisPool`实现,分别对应集群和单机操作。通过配置文件动态加载实现单机或集群模式,并通过注释配置轻松切换。
1456

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



