使用RedisTemplate和ShardedJedis

23

以下是直接从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

我的问题是:

我该如何在RedisTemplate中使用ShardedJedis


这是旧的帖子,但当时的回复说它不支持分片。http://forum.spring.io/forum/spring-projects/data/nosql/104599-how-to-connect-to-multiple-redis-instances-using-redistemplate - Alper Akture
2个回答

1
我认为它并不直接支持你的情况。RedisTemplate提供了与Redis交互的高级抽象。而RedisConnection提供了低级方法,接受和返回二进制值(字节数组)。
请参见:通过RedisTemplate使用对象

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"/> -->

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接