spring集成redis pipeline hget

public List hGetPipeline(final String rtemplate, final int dbId, final List keys, final String field) {
    StringRedisTemplate redisTemplate = redisTemplateAdpter.getRedisTemplate(rtemplate);
    List resultStr = null;
    if (redisTemplate != null) {
        resultStr = redisTemplate.execute(new RedisCallback>() {
            @Override
            public List doInRedis(RedisConnection connection) throws DataAccessException {
                connection.select(dbId);
                RedisSerializer serializer = getRedisSerializer(rtemplate);
                List retList = Lists.newArrayList();
                List names = Lists.newArrayList();
                names.addAll(keys.stream().map(serializer::serialize).collect(Collectors.toList()));
                byte[] fields = serializer.serialize(field);
                connection.openPipeline();
                for (byte[] key : names) {
                    connection.hGet(key, fields);
                }
                List lists = connection.closePipeline();
                for (Object list: lists) {
                    if (Objects.isNull(list)) {
                        retList.add(null);
                    } else {
                        retList.add(serializer.deserialize((byte[])list));
                    }
                }
                return retList;
            }
        });
    }
    return resultStr;
} 
   

你可能感兴趣的:(java)