2015-05-29 3 views
1

У меня есть список идентификаторов, которые я хочу использовать для извлечения хэшей с сервера Redis с помощью java-клиента jedis. Как сказано в документации, Jedis дает возможность использовать трубопровод, объявив объекты реагирования, а затем синхронизировать трубопровод, чтобы получить значение:Получение значений с конвейером jedis

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(); 

Однако мой список имеет переменную длину, которая постоянно меняются каждые несколько минут. Таким образом, я не могу предсказать количество объектов Response, которые мне нужно объявить. Есть ли способ обойти это, что-то вроде:

Pipeline p = jedis.pipelined(); 
Response<List<List<Map<String,String>>> records; 
for (int id: ids) 
    records.add(p.hgetAll(id)) 
p.sync(); 

ответ

0

Я предполагаю, что вы хотите для того чтобы достигнуть делается так.

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(); 
} 
Смежные вопросы