使用ShardedJedis和RedisTemplate

时间:2015-04-13 23:27:18

标签: java spring redis jedis

以下是从jedis github页面直接复制的Jedis文档:

List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
JedisShardInfo si = new JedisShardInfo("localhost", 6379);
si.setPassword("foobared");
shards.add(si);
si = new JedisShardInfo("localhost", 6380);
si.setPassword("foobared");
shards.add(si);

然后,有两种方法可以使用ShardedJedis。直接连接或使用ShardedJedisPool。为了可靠运行,后者必须在多线程环境中使用。

2.a)直接连接:

ShardedJedis jedis = new ShardedJedis(shards);
jedis.set("a", "foo");
jedis.disconnect;

2.b)汇集连接:

ShardedJedisPool pool = new ShardedJedisPool(new Config(), shards);
ShardedJedis jedis = pool.getResource();
jedis.set("a", "foo");
.... // do your work here
pool.returnResource(jedis);
.... // a few moments later
ShardedJedis jedis2 = pool.getResource();
jedis.set("z", "bar");
pool.returnResource(jedis);
pool.destroy();

上面的示例显示了如何使用ShardedJedis

在我目前的设置中,我使用的是RedisTemplateJedisConnectionFactory

我的问题是

  

如何将ShardedJedisRedisTemplate一起使用?

2 个答案:

答案 0 :(得分:1)

我认为它并不能直接支持你的案子。 RedisTemplate为Redis交互提供了高级抽象。 而RedisConnection提供接受和返回二进制值(字节数组)的低级方法。

请参阅:Working with Objects through RedisTemplate

答案 1 :(得分:0)

我认为您可以使用以下代码在spring.xml中配置jedis: 当然你应该创建一个JedisClient.java作为接口

                                     

                                     

<!-- redis cluster -->
<!-- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
    <constructor-arg>
        <set>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis01.real.cluster.client.host}"/>
                <constructor-arg name="port" value="${redis01.real.cluster.client.port}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis02.real.cluster.client.host}"/>
                <constructor-arg name="port" value="${redis02.real.cluster.client.port}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis03.real.cluster.client.host}"/>
                <constructor-arg name="port" value="${redis03.real.cluster.client.port}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis04.real.cluster.client.host}"/>
                <constructor-arg name="port" value="${redis04.real.cluster.client.port}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis05.real.cluster.client.host}"/>
                <constructor-arg name="port" value="${redis05.real.cluster.client.port}"/>
            </bean>
            <bean class="redis.clients.jedis.HostAndPort">
                <constructor-arg name="host" value="${redis06.real.cluster.client.host}"/>
                <constructor-arg name="port" value="${redis06.real.cluster.client.port}"/>
            </bean>
        </set>
    </constructor-arg>
</bean>
<bean id="jedisClientCluster" class="com.dingli.rest.component.impl.JedisClientCluster"/> -->