美文网首页
java 用jedis管道操作,批量获取hash

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

作者: zhy0324 | 来源:发表于2020-04-11 21:15 被阅读0次

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

    /**
      * 根据redis key前缀批量获取文件夹下的hash值,并转换成对象
      * @param tClass 接收hash的的数据类
      * @param keyPrefix key前缀例如 user:
      * @throws
      * @return java.util.List<T>
      * @author zhy
      * @date 2020/4/10 16:37
      */
    public <T> List<T> hgetAllByPrefix(Class<T> tClass,String keyPrefix){
        Jedis jedis = null;
        Pipeline pipelined = null;
        try {
            jedis = pool.getResource();
            //批量获取文件夹下面的key值
            Set<String> 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();
            }
        }
        
    }

相关文章

网友评论

      本文标题:java 用jedis管道操作,批量获取hash

      本文链接:https://www.haomeiwen.com/subject/gqepmhtx.html