java redis 管道_java 用jedis管道操作,批量获取hash

当redis中某个文件夹下面,存了很多结构一样的hash类型数据,我们又需要批量一起取出来,用简单的hget命令效率很慢,这个时候就需要用到redis管道操作了,这样可以大大提升读取效率,可以用如下代码去操作

/**

* 根据redis key前缀批量获取文件夹下的hash值,并转换成对象

* @param tClass 接收hash的的数据类

* @param keyPrefix key前缀例如 user:

* @throws

* @return java.util.List

* @author zhy

* @date 2020/4/10 16:37

*/

public List hgetAllByPrefix(Class tClass,String keyPrefix){

Jedis jedis = null;

Pipeline pipelined = null;

try {

jedis = pool.getResource();

//批量获取文件夹下面的key值

Set keys = jedis.keys(keyPrefix + "*");

//管道操作

pipelined = jedis.pipelined();

for (String key : keys) {

pipelined.hgetAll(key);

}

return JSON.parseArray(JSON.toJSONString(pipelined.syncAndReturnAll()),tClass);

} finally {//关闭资源

if (pipelined != null){

try {

pipelined.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (jedis != null){

jedis.close();

}

}

}


版权声明:本文为weixin_34597791原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。