Data Integration de DataWorks vous permet d'utiliser Redis Writer pour écrire des données dans Redis. Cette rubrique explique comment procéder à des écritures par lot dans une source de données Redis avec DataWorks.
Limites
Exécutez les tâches d'importation de données sur des groupes de ressources serverless (recommandés) ou des groupes de ressources dédiés pour Data Integration.
-
Si la valeur est de type List, la réexécution d'une tâche de synchronisation avec Redis Writer n'est pas idempotente. Dans ce cas, supprimez manuellement les données correspondantes de Redis avant de relancer la tâche.
ImportantRedis ne prend pas encore en charge les filtres Bloom. Pour gérer les doublons, contournez cette limitation en ajoutant un nœud Shell, Python ou PyODPS avant ou après le nœud de synchronisation dans votre flux de travail afin de dédupliquer les données.
Types de données pris en charge
Redis prend en charge de nombreux types de données : String, List, Set, ZSet (ensemble trié) et Hash. Pour plus d'informations, consultez le site redis.io.
Développement de tâches de synchronisation de données
Consultez les guides suivants pour connaître le point d'entrée et la procédure de configuration d'une tâche de synchronisation.
Pour la procédure de configuration, consultez les rubriques Configurer une tâche dans l'interface sans code et Configurer une tâche dans l'éditeur de code.
Pour la liste complète des paramètres et des exemples de code destinés à l'éditeur de code, consultez la section Annexe : Exemples de code et paramètres.
Annexe : Exemples de code et paramètres
Configuration d'une tâche de synchronisation par lot à l'aide de l'éditeur de code
Pour configurer une tâche de synchronisation par lot via l'éditeur de code, paramétrez le script selon le format unifié requis. Pour plus d'informations, consultez la rubrique Configuration en mode script. Les sections suivantes détaillent les paramètres à configurer pour les sources de données lors de la création d'une tâche de synchronisation par lot avec l'éditeur de code.
Exemple de code Writer
L'exemple ci-dessous illustre une tâche de synchronisation qui lit des données depuis une base de données MySQL et les écrit dans Redis. Il présente le code pour MySQL Reader et 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"
}
]
}
}
Paramètres Writer
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
expireTime |
Durée d'expiration du cache des valeurs Redis, en secondes. Si vous omettez ce paramètre, la valeur par défaut Configurez expireTime de l'une des deux manières suivantes :
|
Non |
0 (les données n'expirent jamais) |
|
keyFieldDelimiter |
Délimiteur des clés Redis. Par exemple : key=key1\u0001id. Ce paramètre est requis si vous devez concaténer plusieurs clés. Vous pouvez l'ignorer si vous n'utilisez qu'une seule clé. |
Non |
\u0001 |
|
dateFormat |
Format de date utilisé lors de l'écriture des données dans Redis : yyyy-MM-dd HH:mm:ss. |
Non |
S.O. |
|
datasource |
Nom de la source de données. Il doit correspondre exactement au nom de la source de données ajoutée. |
Oui |
S.O. |
|
selectDatabase |
Base de données Redis cible ( |
Non |
Base de données 0 par défaut |
|
writeMode |
Redis Writer prend en charge cinq types de valeur pour l'écriture dans Redis :
La configuration de writeMode varie légèrement selon le type de valeur. Pour plus d'informations, consultez la description du paramètre writeMode ci-dessous. Remarque
Lors de la configuration de Redis Writer, définissez writeMode sur l'un des cinq types de données pris en charge ; un seul type est autorisé. À défaut, writeMode utilise la valeur par défaut |
Non |
string |
|
keyIndexes |
Spécifie les index des colonnes source à utiliser comme clé. Les index commencent à 0 (la première colonne a l'index 0, la deuxième l'index 1, etc.).
Remarque
Après configuration de keyIndexes, Redis Writer utilise les colonnes restantes comme valeur. Pour synchroniser uniquement certaines colonnes spécifiques en tant que clé et d'autres en tant que valeur, filtrez les colonnes via le paramètre column du plug-in Reader. |
Oui |
S.O. |
|
batchSize |
Nombre d'enregistrements par lot. Ce paramètre réduit considérablement le nombre d'interactions réseau entre le système de synchronisation et Redis, améliorant ainsi le débit global. Une valeur trop élevée peut provoquer une erreur de mémoire insuffisante (OOM). |
Non |
1 000 |
|
timeout |
Délai d'attente pour l'écriture des données dans Redis, en millisecondes. |
Non |
30 000 |
|
redisMode |
Mode d'exécution de Redis. Valeurs valides :
Remarque
Pris en charge sur les groupes de ressources serverless (recommandés) et les groupes de ressources dédiés pour Data Integration. |
Non |
S.O. |
|
column |
Configuration des colonnes pour l'écriture dans Redis. Pour le type String Redis avec l'opération set :
|
Non |
S.O. |
Description du paramètre writeMode
Lors de la configuration de Redis Writer, définissez writeMode sur l'un des cinq types de données pris en charge ; un seul type est autorisé. À défaut, writeMode utilise la valeur par défaut string.
|
Type de valeur |
Paramètre type (obligatoire) |
Paramètre mode (obligatoire) |
Paramètre valueFieldDelimiter (facultatif) |
Exemple de configuration writeMode |
|
String |
Définissez type sur |
mode définit le mode d'écriture. Pour les chaînes :
|
valueFieldDelimiter est le délimiteur entre les valeurs. La valeur par défaut est
|
|
|
List |
Définissez type sur |
mode définit le mode d'écriture. Pour les listes, les options suivantes sont disponibles :
|
|
|
|
Set |
Définissez type sur |
mode définit le mode d'écriture. Pour les ensembles :
|
|
|
|
ZSet (ensemble trié) |
Définissez type sur |
mode définit le mode d'écriture. Pour les ZSet (ensembles triés) :
|
Ce paramètre ne nécessite pas de configuration. |
Remarque
Pour le type zset, chaque ligne de données source doit respecter le format correspondant. Chaque ligne ne peut contenir qu'une seule paire score-valeur en plus de la clé, et le score doit précéder la valeur afin que Redis Writer identifie correctement la colonne correspondant au score et celle correspondant à la valeur. |
|
Hash |
Définissez type sur |
mode définit le mode d'écriture. Pour les hachages :
|
Ce paramètre ne nécessite pas de configuration. |
Remarque
Pour le type hash, chaque ligne de données source doit respecter le format correspondant. Chaque ligne ne peut contenir qu'une seule paire attribut-valeur en plus de la clé, et l'attribut doit précéder la valeur afin que Redis Writer identifie correctement la colonne correspondant à l'attribut et celle correspondant à la valeur. |