DataWorks Data Integration の Redis Writer を使用して、Redis データソースにデータを書き込みます。本トピックでは、オフラインデータ同期のための Redis Writer の構成方法について説明します。
制限事項
同期ジョブは、Data Integration のサーバーレスリソースグループ(推奨)またはData Integration の専用リソースグループで実行できます。
List データ型を使用する場合、同期ジョブの再実行は冪等操作ではありません。ジョブを再実行する前に、Redis から手動でデータをクリアする必要があります。
重要Redis Writer はブルームフィルターの構成をサポートしていません。重複データを処理する回避策として、ワークフロー内の同期ノードの前または後に、Shell、Python、または PyODPS ノードなどのノードを追加できます。
サポートされるデータの型
Redis は、文字列、リスト、セット、ソートセット、ハッシュなど、豊富な値の型をサポートしています。Redis の詳細については、redis.ioをご参照ください。
同期ジョブの構成
同期タスクのエントリポイントおよび構成手順については、以下の構成ガイドをご参照ください。
詳細な手順については、「コードレス UI でのタスク構成」および「コードエディタでのタスク構成」をご参照ください。
スクリプトモードのすべてのパラメーターおよびサンプルスクリプトについては、以下の付録をご参照ください。
付録:スクリプトのサンプルとパラメーター
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合は、統一されたスクリプト形式の要件に基づいて、スクリプト内で関連パラメーターを構成する必要があります。詳細については、「コードエディタでのタスク構成」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを構成する際にデータソースに対して構成する必要のあるパラメーターについて説明します。
Writer スクリプトのサンプル
以下のサンプルスクリプトは、MySQL Reader を使用して MySQL ソースからデータを読み取り、Redis Writer を使用して Redis 宛先にデータを書き込む同期ジョブを示しています。
{
"type":"job",
"version":"2.0", // バージョン番号。
"steps":[
{ // 以下のコードはリーダー用です。パラメーターの詳細については、対応する Reader プラグインのドキュメントをご参照ください。
"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"
},
{// 以下のコードはライター用です。
"stepType":"redis", // プラグイン名。Redis Writer の場合は redis に設定します。
"parameter":{ // Redis Writer の主なパラメーター。
"expireTime":{ // キーと値のペアの有効期限。秒数または UNIX タイムスタンプで構成できます。
"seconds":"1000"
},
"keyFieldDelimiter":"u0001", // 複数の列を連結して Redis キーを形成する際のデリミタ。
"dateFormat":"yyyy-MM-dd HH:mm:ss",// Redis に書き込まれる日付型の値のフォーマット。
"datasource":"xc_mysql_demo2", // データソース名。追加したデータソースの名前と一致している必要があります。
"envType": 0, // 環境タイプ。0 は本番環境、1 は開発環境を示します。
"writeMode":{ // 書き込みモード。
"type":"string", // 値のデータ型。
"mode":"set", // 指定されたデータ型に対する書き込みモード。
"valueFieldDelimiter":"u0001" // 複数の列を連結して値を形成する際のデリミタ。
},
"keyIndexes":[0,1], // ソース列を Redis キーにマッピングします。キーとして使用するソース列のインデックスを指定します。列インデックスは 0 から始まります。最初と 2 番目の列を複合キーとして使用する場合、[0,1] に設定します。
"batchSize":"1000", // 1 回のバッチで書き込むレコード数。
"column": [ // このパラメーターは、文字列データ型の set 操作に適用されます。このパラメーターを構成しない場合、値はデリミタで区切られた連結値の文字列(CSV 形式)になります。たとえば、age の値が 18、sex の値が male の場合、Redis の値は "18::male" になります。以下のようにこのパラメーターを構成すると、元の列名とその値を含む JSON 形式で値が書き込まれます。たとえば、id が 1、name が "John"、age が 18、sex が "male" の場合、Redis の値は {"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" // 許容される最大エラーレコード数。
},
"speed":{
"throttle":true, // スロットルを有効または無効にします。false に設定すると、mbps パラメーターは無視されます。
"concurrent":1, // ジョブの同時実行数。
"mbps":"12" // 最大転送速度(MB/s)。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Writer パラメーター
パラメーター | 説明 | 必須 | デフォルト |
expireTime | Redis 内のキーの有効期限。このパラメーターを指定しない場合、デフォルト値 expireTime は以下のいずれかの方法で構成できます。
| いいえ | 0(キーは永続的に有効です。) |
keyFieldDelimiter | 複数の列を連結して Redis キーを形成する際に使用するデリミタ。例:key=key1\u0001id。複数の列を組み合わせてキーを形成する場合、このパラメーターは必須です。キーが単一の列で構成される場合は、このパラメーターを省略できます。 | いいえ | \u0001 |
dateFormat | Redis に書き込まれる日付型の値のフォーマット。例:yyyy-MM-dd HH:mm:ss。 | いいえ | なし |
datasource | データソースの名前。この名前は、DataWorks コンソールで構成した名前と一致している必要があります。 | はい | なし |
selectDatabase | ターゲットデータベースのインデックス。有効値は | いいえ | デフォルトでデータベース 0 が使用されます。 |
writeMode | Redis に書き込まれる値のデータ型。Redis Writer は以下の 5 種類をサポートしています。
writeMode の構成はデータ型によって異なります。詳細については、以下のwriteMode パラメーターセクションをご参照ください。 説明 writeMode には、サポートされている 5 種類のデータ型のいずれかを必ず構成する必要があります。複数の型を指定することはできません。このパラメーターを構成しない場合、デフォルト値 | いいえ | string |
keyIndexes | Redis キーとして使用するソース列のゼロ起点インデックス。
説明 Redis Writer は、keyIndexes で指定されていないすべての列を値として使用します。特定の列のみを同期する場合は、Reader プラグインの column パラメーターを構成してフィルタリングしてください。 | はい | なし |
batchSize | 1 回のバッチで書き込むレコード数。値を大きくすると、Redis とのネットワーク通信回数が減り、スループットが向上します。ただし、この値を高すぎに設定すると、同期ジョブプロセスでメモリ不足(OOM)エラーが発生する可能性があります。 | いいえ | 1000 |
timeout | 書き込み操作のタイムアウト時間(ミリ秒)。 | いいえ | 30000 |
redisMode | Redis のデプロイメントモード。有効値:
説明 | いいえ | なし |
column | Redis に書き込む列の構成。このパラメーターは、`writeMode.type` が `string` かつ `writeMode.mode` が `set` の場合に適用されます。
| いいえ | なし |
writeMode パラメーター
値のデータ型 | Type パラメーター | Mode パラメーター | valueFieldDelimiter パラメーター | サンプル構成 |
文字列 | type を | 文字列データ型の場合、mode は書き込みモードを指定します。
| valueFieldDelimiter は値を連結する際のデリミタです。デフォルト値は
| |
リスト | type を | リストデータ型の場合、mode は以下のいずれかになります。
| | |
セット | type を | セットデータ型の場合、mode は書き込みモードを指定します。
| | |
ソートセット | type を | ソートセットデータ型の場合、mode は書き込みモードを指定します。
| 不要です。 | 説明 値のデータ型が `zset` の場合、各ソースレコードはキー列に加えて、スコア/メンバーのペアを 1 つだけ提供する必要があります。スコアはメンバーの前に記述する必要があります。この形式により、Redis Writer がデータを正しく解析できるようになります。 |
ハッシュ | type を | ハッシュデータ型の場合、mode は書き込みモードを指定します。
| 不要です。 | 説明 値のデータ型が `hash` の場合、各ソースレコードはキー列に加えて、フィールド/値のペアを 1 つだけ提供する必要があります。フィールドは値の前に記述する必要があります。この形式により、Redis Writer がデータを正しく解析できるようになります。 |