使用jedis管道获取值

时间:2015-05-29 19:57:55

标签: java redis pipeline jedis

我有一个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();

1 个答案:

答案 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();
}