小编典典

通过Jedis Pipeline获得价值

redis

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

阅读 245

收藏
2020-06-20

共1个答案

小编典典

我想您要达到的目标是这样完成的。

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();
}
2020-06-20