Todos los productos
Search
Centro de documentos

DataWorks:Redis

Última actualización: Sep 25, 2026

Data Integration de DataWorks permite usar Redis Writer para escribir datos en Redis. En este tema se describe cómo ejecutar escrituras por lotes en un origen de datos Redis mediante DataWorks.

Límites

  • Las tareas de importación de datos se pueden ejecutar en serverless resource groups (recomendado) y en exclusive resource groups for Data Integration.

  • Cuando se usa Redis Writer para escribir datos, volver a ejecutar una tarea de sincronización no es una operación idempotente si el valor es de tipo List. Por lo tanto, si el valor es de tipo List, elimine manualmente los datos correspondientes de Redis antes de volver a ejecutar la tarea.

    Importante

    Actualmente, Redis no admite configuraciones de filtro Bloom. Para manejar datos duplicados, aplique esta solución alternativa: agregue un nodo, como uno de Shell, Python o PyODPS, antes o después del nodo de sincronización en su flujo de trabajo para deduplicar los datos.

Tipos de datos compatibles

Redis admite un amplio conjunto de tipos de datos para valores, entre ellos String, List, Set, ZSet (sorted set) y Hash. Para obtener más información sobre Redis, consulte redis.io.

Desarrollo de tareas de sincronización de datos

Para conocer el punto de entrada y el procedimiento de configuración de una tarea de sincronización, consulte las siguientes guías de configuración.

Apéndice: ejemplos de código y parámetros

Configurar una tarea de sincronización por lotes con el editor de código

Si desea configurar una tarea de sincronización por lotes con el editor de código, especifique los parámetros correspondientes en el script según los requisitos unificados de formato de scripts. Para obtener más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos cuando utilice el editor de código.

Ejemplo de código de Writer

El siguiente código muestra un ejemplo de tarea de sincronización de datos que lee información de una base de datos MySQL y la escribe en Redis. Incluye el código tanto de MySQL Reader como de 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 de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

expireTime

Tiempo de expiración de la caché para los valores de Redis, en segundos. Si no se especifica este parámetro, se utiliza el valor predeterminado 0, lo que indica que los datos nunca expiran.

Configure expireTime de dos maneras:

  • seconds: indica cuánto tiempo pasará desde ahora hasta que los datos expiren. El valor representa la cantidad de segundos entre el momento actual y el tiempo de expiración.

  • unixtime: indica cuánto tiempo pasará desde el 1 de enero de 1970 hasta que los datos expiren. El valor representa la cantidad de segundos entre el 1 de enero de 1970 y el tiempo de expiración.

No

0 (0 indica que los datos nunca expiran)

keyFieldDelimiter

Delimitador para las claves de Redis. Por ejemplo, key=key1\u0001id. Este parámetro es obligatorio si necesita concatenar varias claves. Si solo se utiliza una clave, puede omitirlo.

No

\u0001

dateFormat

Formato de fecha que se utiliza al escribir datos en Redis: yyyy-MM-dd HH:mm:ss.

No

N/D

datasource

Nombre del origen de datos. El valor debe coincidir con el nombre del origen de datos que agregó.

Sí

N/D

selectDatabase

Base de datos de Redis donde se escribirán los datos ("0" to "N-1", donde N es la cantidad de databases configuradas en Redis). Los clústeres de Redis no admiten la selección de bases de datos.

No

Base de datos 0 de forma predeterminada

writeMode

Redis Writer admite los siguientes cinco tipos de valores para escribir datos en Redis:

  • String

  • List

  • Set

  • ZSet (sorted set)

  • Hash

La configuración de writeMode varía ligeramente según el tipo de valor. Para obtener más información, consulte la sección Descripción del parámetro writeMode más adelante.

Nota

Al configurar Redis Writer, establezca writeMode en uno de los cinco tipos de datos admitidos; solo puede especificar un tipo. Si no configura este parámetro, writeMode toma el valor predeterminado string.

No

string

keyIndexes

Especifica los índices de las columnas de origen que se utilizarán como clave. Los índices comienzan en 0 (la primera columna tiene el índice 0, la segunda el 1, y así sucesivamente).

  • Si se utiliza una sola columna de origen como clave de Redis, establezca este parámetro en el índice de dicha columna. Por ejemplo, si la primera columna funciona como clave, defina el valor en 0.

  • Si combina varias columnas consecutivas de origen como clave de Redis, establezca este parámetro en una matriz con los índices de dichas columnas. Por ejemplo, si combina de la segunda a la cuarta columna como clave, defina el valor en [1,3].

Nota

Después de configurar keyIndexes, Redis Writer utiliza las columnas restantes como valor. Si desea sincronizar únicamente ciertas columnas como clave y otras como valor, no es necesario sincronizar todas las columnas. Especifique el parámetro column en el plugin Reader para filtrarlas.

Sí

N/D

batchSize

Cantidad de registros en cada lote. Este parámetro reduce significativamente el número de interacciones de red entre el sistema de sincronización de datos y Redis, lo que mejora el rendimiento general. Si establece un valor demasiado alto, el proceso de sincronización podría generar un error de falta de memoria (OOM).

No

1,000

timeout

Tiempo de espera para escribir datos en Redis, en milisegundos.

No

30,000

redisMode

Modo de ejecución de Redis. Valores válidos:

  • Modo de clúster: establezca redisMode en ClusterMode para indicar el modo de clúster.

    En el modo de clúster, otros orígenes de datos se comunican directamente con el clúster de Redis al escribir información. Por lo general, las direcciones de clúster de Redis autogestionado y las direcciones de conexión directa de Alibaba Cloud Redis utilizan este modo. El modo de clúster admite escrituras por lotes.

  • Modo sin clúster: deje redisMode vacío (sin configurar ningún valor) para indicar el modo sin clúster.

    Normalmente, las direcciones de proxy de clúster, las direcciones de división de lectura/escritura y las direcciones de Standard Edition de Alibaba Cloud Redis usan este modo. El modo sin clúster no admite escrituras por lotes actualmente.

Nota

Compatible con serverless resource groups (recomendado) y con grupos de recursos exclusivos para Data Integration.

No

N/D

column

Configuración de columnas para escribir datos en Redis. Para el tipo string de Redis con la operación set:

  • Si no se configura esta columna, el formato del valor será una cadena separada por delimitadores (formato CSV). Por ejemplo, si ID=1, name="John", age=18 y sex=male, el valor en Redis sería: "18::male".

  • Si configura la columna con el siguiente formato, como "column": [{"index":"0", "name":"id"}, {"index":"1", "name":"name"}], los datos del valor se almacenarán en formato JSON después de escribirlos en Redis, con la estructura {"id":"valor de la columna de origen correspondiente","name":"valor de la columna de origen correspondiente"} . Por ejemplo, si ID=1 y name="John", el valor en Redis sería {"id":"1","name":"John"}.

No

N/D

Descripción del parámetro writeMode

Al configurar Redis Writer, establezca writeMode en uno de los cinco tipos de datos admitidos; solo puede especificar un tipo. Si no configura este parámetro, writeMode toma el valor predeterminado string.

Tipo de valor

Parámetro type (obligatorio)

Parámetro mode (obligatorio)

Parámetro valueFieldDelimiter (opcional)

Ejemplo de configuración de writeMode

String

Establezca type en string.

mode es el parámetro del modo de escritura. Cuando el valor es de tipo string:

  • Establezca mode en set.

  • Si los datos que se van a almacenar ya existen, se sobrescriben.

valueFieldDelimiter es el delimitador entre valores. El valor predeterminado es \u0001.

  • Este parámetro se utiliza principalmente cuando cada fila de datos de origen tiene más de dos columnas. Por ejemplo, si hay tres columnas, los valores se separan con el delimitador de la siguiente manera: value1\u0001value2\u0001value3.

  • Si los datos de origen solo tienen dos columnas (clave y valor), no es necesario configurar este parámetro.

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

List

Establezca type en list.

mode es el parámetro del modo de escritura. Cuando el valor es de tipo list, están disponibles las siguientes opciones:

  • lpush: almacena los datos en la posición más a la izquierda de la lista.

  • rpush: almacena los datos en la posición más a la derecha de la lista.

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

Set

Establezca type en set.

mode es el parámetro del modo de escritura. Cuando el valor es de tipo set:

  • Establezca mode en sadd para almacenar los datos en el conjunto.

  • Si los datos que se van a almacenar ya existen, se sobrescriben.

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

ZSet (sorted set)

Establezca type en zset.

mode es el parámetro del modo de escritura. Cuando el valor es de tipo ZSet (sorted set):

  • Establezca mode en zadd para almacenar los datos en el conjunto ordenado.

  • Si los datos que se van a almacenar ya existen, se sobrescriben.

No es necesario configurar este parámetro.

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

Cuando el tipo de valor es zset, cada fila de datos de origen debe seguir el formato correspondiente. Cada fila solo puede contener un par score-value además de la clave, y el score debe ir antes del valor para que Redis Writer identifique correctamente qué columna corresponde al score y cuál al valor.

Hash

Establezca type en hash.

mode es el parámetro del modo de escritura. Cuando el valor es de tipo hash:

  • Establezca mode en hset para almacenar los datos en el hash.

  • Si los datos que se van a almacenar ya existen, se sobrescriben.

No es necesario configurar este parámetro.

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

Cuando el tipo de valor es hash, cada fila de datos de origen debe seguir el formato correspondiente. Cada fila solo puede contener un par attribute-value además de la clave, y el atributo debe ir antes del valor para que Redis Writer identifique correctamente qué columna corresponde al atributo y cuál al valor.