java - Obteniendo valores con jedis pipeline
redis (1)
Supongo que lo que quieres lograr se hace así.
List<Response> responses = new ArrayList<>();
Pipeline p = jedis.pipelined();
for (int id: ids) {
records.add(p.get(id));
}
p.sync();
for(Reponse response : responses){
Object o = response.get();
}
Tengo una lista de identificadores que quiero usar para recuperar hashes de un servidor Redis utilizando el cliente Java jedis. Como se menciona en la documentación, Jedis proporciona una forma de utilizar la interconexión mediante la declaración de objetos de respuesta y luego sincronizar la interconexión para obtener los valores:
Pipeline p = jedis.pipelined();
p.set("fool", "bar");
p.zadd("foo", 1, "barowitch"); p.zadd("foo", 0, "barinsky"); p.zadd("foo", 0, "barikoviev");
Response<String> pipeString = p.get("fool");
Response<Set<String>> sose = p.zrange("foo", 0, -1);
p.sync();
Sin embargo, mi lista tiene una longitud variable que cambia constantemente cada pocos minutos. Por lo tanto, no puedo predecir la cantidad de objetos de respuesta que debo declarar. ¿Hay alguna manera de evitar eso, algo así como:
Pipeline p = jedis.pipelined();
Response<List<List<Map<String,String>>> records;
for (int id: ids)
records.add(p.hgetAll(id))
p.sync();