add*_*990 6 java pipeline redis 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();
Run Code Online (Sandbox Code Playgroud)
但是,我的列表的长度是可变的,每隔几分钟就会发生变化。因此,我无法预测需要声明的 Response 对象的数量。有没有办法解决这个问题,例如:
Pipeline p = jedis.pipelined();
Response<List<List<Map<String,String>>> records;
for (int id: ids)
records.add(p.hgetAll(id))
p.sync();
Run Code Online (Sandbox Code Playgroud)
小智 8
我想你想要实现的目标就是这样完成的。
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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11896 次 |
最近记录: |