Todos os produtos
Search
Central de documentação

DataWorks:Redis

Última atualização: Jun 27, 2026

O Data Integration do DataWorks permite usar o Redis Writer para gravar dados no Redis. Este tópico descreve como gravar dados em lote em uma fonte de dados Redis com o DataWorks.

Limitações

  • Execute tarefas de importação de dados em grupos de recursos serverless (recomendado) ou em grupos de recursos exclusivos para Data Integration.

  • Ao usar o Redis Writer, a reexecução de uma tarefa de sincronização não é idempotente se o valor for do tipo List. Nesse caso, limpe manualmente os dados correspondentes no Redis antes de reexecutar a tarefa.

    Importante

    O Redis não oferece suporte nativo a configurações de filtro Bloom. Para tratar dados duplicados, adicione um nó (como Shell, Python ou PyODPS) antes ou depois do nó de sincronização no workflow para deduplicar os dados.

Tipos de dados compatíveis

O Redis oferece diversos tipos de dados para valores, incluindo String, List, Set, ZSet (sorted set) e Hash. Para mais informações sobre o Redis, consulte redis.io.

Desenvolvimento de tarefas de sincronização de dados

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias a seguir.

Apêndice: Exemplos de código e parâmetros

Configure uma tarefa de sincronização em lote pelo editor de código

Para configurar uma tarefa de sincronização em lote pelo editor de código, defina os parâmetros no script conforme os requisitos unificados de formato. Para mais detalhes, consulte Configuração em modo de script. As seções a seguir descrevem os parâmetros obrigatórios para fontes de dados ao configurar tarefas de sincronização em lote no editor de código.

Exemplo de código do Writer

O código abaixo exemplifica uma tarefa de sincronização que lê dados de um banco MySQL e os grava no Redis, mostrando tanto o MySQL Reader quanto o Redis Writer.

{
    "type":"job",
    "version":"2.0",  // The version number.
    "steps":[
        { // The following is a code sample for the Reader. For more information about Reader parameters, see the documentation for the corresponding Reader plugin.
            "stepType":"mysql",   
            "parameter": {
                "envType": 0,
                "datasource": "xc_mysql_demo2",
                "column": [
                    "id",
                    "value",
                    "table"
                ],
                "connection": [
                    {
                        "datasource": "xc_mysql_demo2",
                        "table": []
                    }
                ],
                "where": "",
                "splitPk": "",
                "encoding": "UTF-8"
            },,
            "name":"Reader",
            "category":"reader"
        },
        {// The following is a code sample for the Writer.
            "stepType":"redis",                    // The plugin name for Redis Writer. Set this parameter to redis.
            "parameter":{                          // The following section describes the main parameters of Redis Writer.
                "expireTime":{                     // The cache expiration time for Redis values. You can set this parameter to the seconds type or the unixtime type."seconds":"1000"
                            }, 
                "keyFieldDelimiter":"u0001",       // The delimiter for Redis keys.
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// The date format used when data is written to Redis.
                "datasource":"xc_mysql_demo2",     // The data source name. This must be the same as the name of the data source you added.
                "envType": 0,                      // The environment type. Development environment: 1. Production environment: 0.
                "writeMode":{                      // The write mode.
                    "type":"string"                // The value type.
                    "mode":"set",                  // The write mode for a specific value type.
                    "valueFieldDelimiter":"u0001", // The delimiter between values.
                             },
                "keyIndexes":[0,1],                // Used for mapping from the source to Redis. Specifies the source columns to be used as the key (the first column starts from 0). For example, if the first and second columns of the source are combined as the Redis key, set this parameter to [0,1].
                "batchSize":"1000"                 // The number of records in each batch.
        "column": [                        // For Redis type string with set operation: if this column is not configured, the value format is a delimiter-separated string (CSV format. Assuming ID=1, name="John", age=18, sex=male, the Redis value example: "18::male"). If column is configured in the following format, the Redis value will be written in JSON format. Assuming ID=1, name="John", age=18, sex=male, the Redis value example: {"id":1,"name":"John","age":18,"sex":"male"}
                {
                "name": "id",
                "index": "0"

                },
                {
                "name": "name",
                "index": "1"
                },
                {
                "name": "age",
                "index": "2"
                },
                {
                "name": "sex",
                "index": "3"
                }
            ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"                           // The error count.
        },
        "speed":{
            "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. When throttle is set to true, throttling is enabled.
            "concurrent":1, // The concurrency of the job.
            "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parâmetros do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

expireTime

Tempo de expiração do cache para valores do Redis, em segundos. Se omitido, o sistema usa o valor padrão 0, indicando que os dados nunca expiram.

Configure o expireTime de duas formas:

  • seconds: define a duração até a expiração dos dados. O valor representa os segundos entre o momento atual e a expiração.

  • unixtime: define o tempo até a expiração contado a partir de 1º de janeiro de 1970. O valor corresponde aos segundos decorridos desde essa data até a expiração.

Não

0 (0 indica que os dados nunca expiram)

keyFieldDelimiter

Delimitador para chaves do Redis. Exemplo: key=key1\u0001id. Obrigatório apenas ao concatenar várias chaves. Ignore este parâmetro se usar uma única chave.

Não

\u0001

dateFormat

Formato de data usado na gravação de dados no Redis: yyyy-MM-dd HH:mm:ss.

Não

N/A

datasource

Nome da fonte de dados. Deve corresponder exatamente ao nome da fonte de dados adicionada.

Sim

N/A

selectDatabase

Banco de dados Redis de destino ("0" a "N-1", onde N é a quantidade de databases configurados no Redis). Clusters Redis não oferecem suporte à seleção de banco de dados.

Não

Banco de dados 0 por padrão

writeMode

O Redis Writer aceita cinco tipos de valor para gravação:

  • String

  • List

  • Set

  • ZSet (sorted set)

  • Hash

A configuração do writeMode varia conforme o tipo de valor. Consulte a descrição do parâmetro writeMode abaixo.

Nota

Ao configurar o Redis Writer, defina o writeMode com apenas um dos cinco tipos de dados aceitos. Sem essa configuração, o writeMode assume o valor padrão string.

Não

string

keyIndexes

Define os índices das colunas de origem usadas como chave. A numeração começa em 0 (primeira coluna = 0, segunda = 1, etc.).

  • Se apenas uma coluna de origem servir como chave, defina este parâmetro com o índice dessa coluna. Exemplo: use 0 se a primeira coluna for a chave.

  • Se múltiplas colunas consecutivas formarem a chave, use um array com os índices correspondentes. Exemplo: use [1,3] se as colunas da segunda à quarta compuserem a chave.

Nota

Após definir o keyIndexes, o Redis Writer usa as colunas restantes como valor. Para sincronizar apenas colunas específicas como chave e outras como valor, filtre as colunas desejadas usando o parâmetro column no plugin Reader.

Sim

N/A

batchSize

Quantidade de registros por lote. Reduz significativamente as interações de rede entre o sistema de sincronização e o Redis, aumentando o throughput geral. Valores muito altos podem causar erros de falta de memória (OOM).

Não

1.000

timeout

Tempo limite para gravação de dados no Redis, em milissegundos.

Não

30.000

redisMode

Modo de execução do Redis. Valores válidos:

  • Modo cluster: Defina redisMode como ClusterMode.

    Neste modo, as fontes de dados comunicam-se diretamente com o cluster Redis durante a gravação. Geralmente usado por endereços de cluster Redis auto-gerenciados e endereços de conexão direta do Alibaba Cloud Redis. Oferece suporte a gravações em lote.

  • Modo não-cluster: Deixe redisMode vazio.

    Usado normalmente por endereços de proxy de cluster do Alibaba Cloud Redis, endereços de divisão de leitura/gravação e endereços da Standard Edition. Atualmente, não oferece suporte a gravações em lote.

Nota

Compatível com grupos de recursos serverless (recomendado) e grupos de recursos exclusivos para Data Integration.

Não

N/A

column

Configuração de colunas para gravação no Redis. Para o tipo string com operação set:

  • Sem esta configuração, o valor será uma string separada por delimitadores (formato CSV). Exemplo: se ID=1, name="John", age=18 e sex=male, o valor no Redis será "18::male".

  • Se configurada como "column": [{"index":"0", "name":"id"}, {"index":"1", "name":"name"}], o valor será armazenado no Redis em formato JSON: {"id":"valor da coluna de origem correspondente","name":"valor da coluna de origem correspondente"} . Exemplo: se ID=1 e name="John", o valor será {"id":"1","name":"John"}.

Não

N/A

Descrição do parâmetro writeMode

Ao configurar o Redis Writer, defina o writeMode com apenas um dos cinco tipos de dados aceitos. Caso omita este parâmetro, o writeMode assumirá o valor padrão string.

Tipo de valor

Parâmetro type (obrigatório)

Parâmetro mode (obrigatório)

Parâmetro valueFieldDelimiter (opcional)

Exemplo de configuração do writeMode

String

Defina type como string.

O parâmetro mode define o modo de gravação. Para strings:

  • Defina mode como set.

  • Sobrescreve dados existentes.

O valueFieldDelimiter separa os valores. Padrão: \u0001.

  • Use principalmente quando houver mais de duas colunas nos dados de origem. Exemplo com três colunas: value1\u0001value2\u0001value3.

  • Desnecessário se os dados de origem tiverem apenas duas colunas (chave e valor).

"writeMode":{
        "type": "string",
        "mode": "set",
        "valueFieldDelimiter": "\u0001"
        }

List

Defina type como list.

O parâmetro mode define o modo de gravação. Opções para listas:

  • lpush: insere dados à esquerda da lista.

  • rpush: insere dados à direita da lista.

"writeMode":{
    "type": "list",
    "mode": "lpush|rpush",
    "valueFieldDelimiter": "\u0001"
}

Set

Defina type como set.

O parâmetro mode define o modo de gravação. Para conjuntos (set):

  • Defina mode como sadd para adicionar dados ao conjunto.

  • Substitui dados pré-existentes.

"writeMode":{
        "type": "set",
        "mode": "sadd",
        "valueFieldDelimiter": "\u0001"
        }

ZSet (sorted set)

Defina type como zset.

O parâmetro mode define o modo de gravação. Para conjuntos ordenados (ZSet):

  • Defina mode como zadd para adicionar dados ao conjunto ordenado.

  • Sobrescreve dados existentes.

Configuração desnecessária.

"writeMode":{
        "type": "zset",
        "mode": "zadd"
        }
Nota

Para valores zset, cada linha dos dados de origem deve seguir o formato adequado. Além da chave, cada linha admite apenas um par score-valor. O score deve preceder o valor para que o Redis Writer identifique corretamente as colunas correspondentes.

Hash

Defina type como hash.

O parâmetro mode define o modo de gravação. Para hashes:

  • Defina mode como hset para armazenar dados no hash.

  • Substitui dados já armazenados.

Configuração desnecessária.

"writeMode":{
        "type": "hash",
        "mode": "hset"
        }
Nota

Para valores hash, cada linha dos dados de origem deve obedecer ao formato adequado. Além da chave, cada linha admite apenas um par atributo-valor. O atributo deve preceder o valor para que o Redis Writer identifique corretamente as colunas correspondentes.