DataWorks は、Redis データソースにデータを書き込むための Redis Writer を提供します。このトピックでは、Redis データソースにデータを同期する機能について説明します。
制限事項
サーバーレスリソースグループとData Integration 専用リソースグループがサポートされています。サーバーレスリソースグループの使用を推奨します。
Redis Writer を使用して LIST タイプの値を Redis に書き込む同期タスクを再実行する場合、データ同期の結果はべき等ではありません。この場合、同期タスクを再実行する前に、前回の実行で Redis Writer によって書き込まれたデータを Redis から手動で削除する必要があります。
重要現在、Redis はブルームフィルターの設定をサポートしていません。重複データを処理するには、ワークフローの同期ノードの前または後にノード (Shell、Python、PyODPS など) を追加して、重複排除を実行します。
データ型のマッピング
Redis は、STRING、LIST、SET、ZSET (ソート済みセット)、HASH のデータ型の値をサポートしています。詳細については、「redis.io」をご参照ください。
データ同期タスクの開発
エントリーポイントと同期タスクの設定手順については、以下の設定ガイドをご参照ください。
詳細については、「コードレス UI でタスクを設定する」および「コードエディタでタスクを設定する」をご参照ください。
コードエディタを使用してバッチ同期タスクを設定する際に設定されるすべてのパラメーターと実行されるコードについては、「付録: コードとパラメーター」をご参照ください。
付録: コードとパラメーター
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでタスクを設定する」をご参照ください。以下の情報は、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明しています。
Redis Writer のコード
以下のコードでは、MySQL データベースから Redis にデータを同期するようにバッチ同期タスクが設定されています。
{
"type":"job",
"version":"2.0", // バージョン番号。
"steps":[
{ // 以下のサンプルコードは Reader の設定に使用されます。Reader のパラメーターの詳細については、関連する 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"
},
{// 以下のサンプルコードは Writer の設定に使用されます:
"stepType":"redis", // プラグイン名。値を redis に設定します。
"parameter":{ // Redis Writer の以下のパラメーターを設定します。
"expireTime":{ // Redis にキャッシュされる値の有効期限。値を秒単位の期間または UNIX タイムスタンプに設定します。たとえば、このパラメーターを "seconds":"1000" に設定できます。
},
"keyFieldDelimiter":"u0001", // Redis Writer が Redis にデータを書き込むときにキーを区切るために使用するデリミタ。
"dateFormat":"yyyy-MM-dd HH:mm:ss",// Redis Writer が DATE 型のデータを Redis に書き込む形式。
"datasource":"xc_mysql_demo2", // データソースの名前。追加したデータソースの名前と同じである必要があります。
"envType": 0, // 環境のタイプ。開発環境の場合は値を 1 に設定します。本番環境の場合は値を 0 に設定します。
"writeMode":{ // データが Redis に書き込まれるモード。
"type": "string", // Redis に書き込む値のデータ型。
"mode":"set", // type パラメーターで指定された型のデータが Redis に書き込まれるモード。
"valueFieldDelimiter":"u0001", // 列の値を区切るために使用するデリミタ。
},
"keyIndexes":[0,1], // Redis Writer が Redis にデータを書き込むときにキーとして使用されるソース列のインデックス。この例では、値は [0,1] に設定されており、ソースデータの 1 番目と 2 番目の列がキーとして使用されることを示します。
"batchSize":"1000" // 一度に書き込むデータレコードの数。
"column": [ // type パラメーターを string に、mode パラメーターを set に設定し、column パラメーターを設定しない場合、Redis に書き込まれる値はデリミタで連結された文字列になります。たとえば、CSV ソースファイルで、id の値が 1、name の値が Bob、age の値が 18、sex の値が male の場合、Redis に書き込まれる値は "18::male" です。type パラメーターを string に、mode パラメーターを set に設定し、column パラメーターを次の形式で設定すると、値は {"id":1,"name":"Bob","age":18,"sex":"male"} などの JSON 形式で Redis に書き込まれます。
{
"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 は速度制限が無効であることを示し、値 true は速度制限が有効であることを示します。mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。
"concurrent":1, // 並列スレッドの最大数。
"mbps":"12"// 最大転送速度。単位: MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Redis Writer のコード内のパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
expireTime | Redis にキャッシュされる値の有効期限。単位: 秒。このパラメーターを設定しない場合、デフォルト値の expireTime パラメーターの値は、次のいずれかのモードで指定できます:
| いいえ | 0 |
keyFieldDelimiter | Redis Writer が Redis にデータを書き込むときにキーを区切るために使用するデリミタ。例: key=key1\u0001id。複数のキーを連結する必要がある場合、このパラメーターは必須です。データにキーが 1 つしかない場合、このパラメーターは不要です。 | いいえ | \u0001 |
dateFormat | Redis Writer が DATE 型のデータを Redis に書き込む形式。yyyy-MM-dd HH:mm:ss に値を設定します。 | いいえ | デフォルト値なし |
datasource | データソースの名前。追加したデータソースの名前と同じである必要があります。 | はい | デフォルト値なし |
selectDatabase | データを書き込むデータベース。Redis クラスターの最初のデータベースはデータベース 0 です。Data Integration では、Redis クラスターにデータを書き込むデータベースを選択することはできません。 | いいえ | データベース 0 |
writeMode | Redis Writer が Redis にデータを書き込むモード。Redis Writer は、次の型の値を書き込むことができます:
writeMode パラメーターの値は、Redis に書き込む値のデータ型によって異なります。詳細については、「writeMode パラメーターの説明」をご参照ください。 説明 Redis Writer を設定するとき、writeMode パラメーターには 1 つのデータ型しか指定できません。このパラメーターを設定しない場合、デフォルト値の string が使用されます。 | いいえ | string |
keyIndexes | キーとして使用されるソース列のインデックス。インデックスは 0 から始まります。これは、最初の列のインデックスが 0、2 番目の列のインデックスが 1、というようになります。
説明 keyIndexes パラメーターを設定すると、Redis Writer は残りの列を値として使用します。ソースの一部の列のみを同期する場合は、関連する Reader を設定するときに columns の名前を指定します。 | はい | デフォルト値なし |
batchSize | 一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメーターに適切な値を設定します。これにより、Data Integration と Redis 間のやり取りが大幅に削減され、スループットが向上します。このパラメーターに大きすぎる値を設定すると、データ同期中にメモリ不足 (OOM) エラーが発生する可能性があります。 | サポートされていません。 | 1,000 |
timeout | Redis にデータを書き込むときの Redis への接続のタイムアウト期間。単位: ミリ秒。 | サポートされていません。 | 30,000 |
redisMode | Redis のデプロイメントモード。有効な値:
説明 サーバーレスリソースグループと Data Integration 専用リソースグループがサポートされています。サーバーレスリソースグループの使用を推奨します。 | いいえ | デフォルト値なし |
column | データを書き込む列の名前。type パラメーターを string に、mode パラメーターを set に設定した場合、次の点に注意してください:
| いいえ | デフォルト値なし |
writeMode パラメーターの説明
Redis Writer を設定するとき、writeMode パラメーターには 1 つのデータ型しか指定できません。このパラメーターを設定しない場合、デフォルト値の string が使用されます。
値のデータ型 | type パラメーター (必須) | mode パラメーター (必須) | valueFieldDelimiter パラメーター (オプション) | writeMode パラメーターの設定例 |
STRING | type パラメーターを | Redis Writer が STRING タイプのデータを Redis に書き込む際のモード。type パラメーターを string に設定する場合は、以下のルールに注意してください:
| 列の値を区切るために使用する デリミタ。デフォルト値:
| |
LIST | type パラメーターを | mode は、Redis Writer が LIST 型のデータを Redis に書き込むモードです。有効な値:
| | |
SET | type パラメーターを | Redis Writer が SET 型のデータを Redis に書き込む際のmode です。type パラメーターをセットに設定する場合は、次のルールに注意してください:
| | |
ZSET (ソート済みセット) | type パラメーターを | Redis Writer が ZSET 型のデータを Redis に書き込む際の mode です。type パラメーターを zset に設定する場合は、次のルールに注意してください。
| このパラメーターを設定する必要はありません。 | 説明 データ型が ZSET に設定されている場合、ソースデータの各行は次の要件を満たす必要があります: 行には、キーを除いて 1 つのスコアと 1 つの値のみを含めることができます。スコアは値の前に配置する必要があります。これにより、Redis Writer はスコアと値を区別できます。 |
HASH | type パラメーターを | Redis Writer がハッシュ型のデータを Redis に書き込む際のモードです。type パラメーターをハッシュに設定する場合は、以下のルールにご注意ください。
| このパラメーターを設定する必要はありません。 | 説明 データ型が HASH に設定されている場合、ソースデータの各行は次の要件を満たす必要があります: 行には、キーを除いて 1 つの属性と 1 つの値のみを含めることができます。属性は値の前に配置する必要があります。これにより、Redis Writer は属性と値を区別できます。 |