¿Cuál es mejor, jedis o strpin-data-redis?
Mientras miraba el código fuente de ShardedJedis hoy, descubrí que ShardedJedis no usa la IP y el puerto del nodo para el hash, sino el orden o el nombre de la instancia, lo cual es increíble.
inicializar vacío privado(List fragmentos) {
nodos = new TreeMap
for (int i = 0 ; i ! = fragmentos.size(); ++i) {
final S shardInfo = fragmentos.get(i);
if (shardInfo.getName() == nulo )
for (int n = 0; n < 160 * shardInfo.getWeight(); n++) {
nodes.put(this.algo.hash("SHARD-" + i + "-NODE-" + n),
shardInfo);
}
else
para (int n = 0 ; n < 160 * shardInfo. lt; 160 * shardInfo.getWeight(); n++) {
nodos.put(
this.algo.hash(shardInfo.getName() + "*"
+ shardInfo.getWeight() + n), shardInfo);
}
resources.put(shardInfo, shardInfo.createResource()) ;
}
La configuración también es muy sencilla:
<.property name="testOnReturn" value="true"/>
< nombre de propiedad="testOnReturn" valor="true"/>
& lt;nombre de propiedad="testWhileIdle" valor="true"/>
< constructor-arg tipo="int" valor="7000"/>
< bean class="redis.clients.jedis.Jedis.JedisShardInfo"/>
bean>
Inicialmente, puede configurar suficientes instancias para que cuando los datos se expandan
Y luego simplemente cambie la IP y el puerto en el archivo de configuración.
Además, Jedis también proporciona encapsulación del grupo centinela de Jedis, de modo que cuando se produce un cambio maestro-esclavo, el No es necesario reconfigurar ni implementar el servidor web.
@Autowired grupo privado JedisSentinelPool;
public void mymethod() {
Jedis jedis = null;
prueba {
jedis = pool.
} catch (JedisException je) {
throw je;
} finalmente {
if (jedis ! = null) pool.returnResource(jedis);
}
}
Configuración de Spring Bean:
<.set>
<.