我有一个id列表,我想用它来使用java客户端jedis从Redis服务器检索哈希值。正如文档中所提到的,Jedis提供了一种通过声明Response对象然后同步管道来获取值来使用管道的方法:
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 :(得分:0)
我想你想要实现的是这样做的。
List<Response> responses = new ArrayList<>();
Pipeline p = jedis.pipelined();
for (int id: ids) {
responses .add(p.get(id));
}
p.sync();
for(Reponse response : responses){
Object o = response.get();
}