@Override
    public ExtractNode createExtractNode(StreamNode streamNodeInfo) {
        RedisSource source = (RedisSource) streamNodeInfo;
        List<FieldInfo> fieldInfos = parseStreamFieldInfos(source.getFieldList(), source.getSourceName());
        Map<String, String> properties = parseProperties(source.getProperties());

        RedisMode redisMode = RedisMode.forName(source.getRedisMode());
        switch (redisMode) {
            case STANDALONE:
                return new RedisExtractNode(
                        source.getSourceName(),
                        source.getSourceName(),
                        fieldInfos,
                        null,
                        properties,
                        source.getPrimaryKey(),
                        RedisCommand.forName(source.getCommand()),
                        source.getHost(),
                        source.getPort(),
                        source.getPassword(),
                        source.getAdditionalKey(),
                        source.getDatabase(),
                        source.getTimeout(),
                        source.getSoTimeout(),
                        source.getMaxTotal(),
                        source.getMaxIdle(),
                        source.getMinIdle(),
                        parseLookupOptions(source.getLookupOptions()));
            case SENTINEL:
                return new RedisExtractNode(
                        source.getSourceName(),
                        source.getSourceName(),
                        fieldInfos,
                        null,
                        properties,
                        source.getPrimaryKey(),
                        RedisCommand.forName(source.getCommand()),
                        source.getMasterName(),
                        source.getSentinelsInfo(),
                        source.getPassword(),
                        source.getAdditionalKey(),
                        source.getDatabase(),
                        source.getTimeout(),
                        source.getSoTimeout(),
                        source.getMaxTotal(),
                        source.getMaxIdle(),
                        source.getMinIdle(),
                        parseLookupOptions(source.getLookupOptions()));
            case CLUSTER:
                return new RedisExtractNode(
                        source.getSourceName(),
                        source.getSourceName(),
                        fieldInfos,
                        null,
                        properties,
                        source.getPrimaryKey(),
                        RedisCommand.forName(source.getCommand()),
                        source.getClusterNodes(),
                        source.getPassword(),
                        source.getAdditionalKey(),
                        source.getDatabase(),
                        source.getTimeout(),
                        source.getSoTimeout(),
                        source.getMaxTotal(),
                        source.getMaxIdle(),
                        source.getMinIdle(),
                        parseLookupOptions(source.getLookupOptions()));
            default:
                throw new IllegalArgumentException(String.format("Unsupported redis-mode=%s for Inlong", redisMode));
        }
    }
The Provider for creating Redis extract or load nodes.
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sort/node/provider/RedisProvider.java