使用绝地管道获取价值
Getting values with jedis pipeline
我有一个 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();
我想你想要达到的目的是这样完成的。
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();
}
我有一个 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();
我想你想要达到的目的是这样完成的。
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();
}