java - example - spring boot redis connection factory
Usando ShardedJedis con RedisTemplate (2)
A continuación se muestra la documentación de Jedis directamente copiada de la página de jedis github:
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);
Entonces, hay dos formas de usar ShardedJedis
. Conexiones directas o utilizando ShardedJedisPool
. Para un funcionamiento fiable, este último debe utilizarse en un entorno de multiproceso.
2.a) Conexión directa:
ShardedJedis jedis = new ShardedJedis(shards);
jedis.set("a", "foo");
jedis.disconnect;
2.b) Conexión agrupada:
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();
El ejemplo de arriba muestra cómo usar ShardedJedis
.
En mi configuración actual, estoy usando RedisTemplate
y JedisConnectionFactory
.
Mi pregunta es
¿Cómo uso
ShardedJedis
conRedisTemplate
?
Creo que no apoya directamente tu caso. RedisTemplate ofrece una abstracción de alto nivel para las interacciones de Redis. Mientras que RedisConnection ofrece métodos de bajo nivel que aceptan y devuelven valores binarios (matrices de bytes).
Creo que puedes configurar jedis en spring.xml con el siguiente código: y, por supuesto, debes crear un JedisClient.java como interfaz
<!-- 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"/> -->