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