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.
ImportanteO 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.
Para o procedimento de configuração, consulte Configurar uma tarefa na interface visual sem código e Configurar uma tarefa no editor de código.
Para a lista completa de parâmetros e exemplos de código do editor de código, consulte Apêndice: Exemplos de código e parâmetros.
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 Configure o expireTime de duas formas:
|
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 ( |
Não |
Banco de dados 0 por padrão |
|
writeMode |
O Redis Writer aceita cinco tipos de valor para gravação:
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 |
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.).
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:
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:
|
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 |
O parâmetro mode define o modo de gravação. Para strings:
|
O valueFieldDelimiter separa os valores. Padrão:
|
|
|
List |
Defina type como |
O parâmetro mode define o modo de gravação. Opções para listas:
|
|
|
|
Set |
Defina type como |
O parâmetro mode define o modo de gravação. Para conjuntos (set):
|
|
|
|
ZSet (sorted set) |
Defina type como |
O parâmetro mode define o modo de gravação. Para conjuntos ordenados (ZSet):
|
Configuração desnecessária. |
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 |
O parâmetro mode define o modo de gravação. Para hashes:
|
Configuração desnecessária. |
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. |