すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Redis データソース

最終更新日:Oct 28, 2025

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」をご参照ください。

データ同期タスクの開発

エントリーポイントと同期タスクの設定手順については、以下の設定ガイドをご参照ください。

付録: コードとパラメーター

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでタスクを設定する」をご参照ください。以下の情報は、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明しています。

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 にキャッシュされる値の有効期限。単位: 秒。このパラメーターを設定しない場合、デフォルト値の 0 が使用され、値が永続的に有効であることを示します。

expireTime パラメーターの値は、次のいずれかのモードで指定できます:

  • seconds: 現在の時点からの相対的な期間 (秒単位)。値が有効である期間を指定します。

  • unixtime: 1970 年 1 月 1 日 00:00:00 から経過した秒数。値が期限切れになる時点を指定します。

いいえ

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 は、次の型の値を書き込むことができます:

  • STRING

  • LIST

  • SET

  • ZSET (ソート済みセット)

  • HASH

writeMode パラメーターの値は、Redis に書き込む値のデータ型によって異なります。詳細については、「writeMode パラメーターの説明」をご参照ください。

説明

Redis Writer を設定するとき、writeMode パラメーターには 1 つのデータ型しか指定できません。このパラメーターを設定しない場合、デフォルト値の string が使用されます。

いいえ

string

keyIndexes

キーとして使用されるソース列のインデックス。インデックスは 0 から始まります。これは、最初の列のインデックスが 0、2 番目の列のインデックスが 1、というようになります。

  • ソースの特定の列をキーとして指定する場合は、このパラメーターを列のインデックスに設定します。たとえば、最初の列をキーとして指定する場合は、このパラメーターを 0 に設定します。

  • ソースの隣接した列の範囲をキーとして指定する場合は、このパラメーターをこれらの列のインデックスを指定する閉区間に設定します。たとえば、2 番目、3 番目、4 番目の列をキーとして指定する場合は、このパラメーターを [1,3] に設定します。

説明

keyIndexes パラメーターを設定すると、Redis Writer は残りの列を値として使用します。ソースの一部の列のみを同期する場合は、関連する Reader を設定するときに columns の名前を指定します。

はい

デフォルト値なし

batchSize

一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメーターに適切な値を設定します。これにより、Data Integration と Redis 間のやり取りが大幅に削減され、スループットが向上します。このパラメーターに大きすぎる値を設定すると、データ同期中にメモリ不足 (OOM) エラーが発生する可能性があります。

サポートされていません。

1,000

timeout

Redis にデータを書き込むときの Redis への接続のタイムアウト期間。単位: ミリ秒。

サポートされていません。

30,000

redisMode

Redis のデプロイメントモード。有効な値:

  • クラスターモード: redisMode パラメーターを Cluster モードに設定すると、クラスターモードが有効になります。

    このモードでは、別のデータソースから Redis クラスターにデータを同期するとき、Data Integration は Redis クラスターに直接接続して通信します。自己管理 Redis クラスターまたは直接接続モードを使用する ApsaraDB for Redis クラスターインスタンスにデータを書き込む場合は、redisMode パラメーターをこの値に設定する必要があります。このモードは、バッチデータ書き込みをサポートしていません。

  • 非クラスターモード: redisMode パラメーターを空のままにすると、非クラスターモードが有効になります。

    ほとんどの場合、プロキシ接続モードを使用する ApsaraDB for Redis クラスターインスタンス、ApsaraDB for Redis 読み書き分離インスタンス、または ApsaraDB for Redis 標準マスターレプリカインスタンスにデータを書き込む場合は、非クラスターモードを使用する必要があります。このモードは、バッチデータ書き込みをサポートしています。

説明

サーバーレスリソースグループと Data Integration 専用リソースグループがサポートされています。サーバーレスリソースグループの使用を推奨します。

いいえ

デフォルト値なし

column

データを書き込む列の名前。type パラメーターを string に、mode パラメーターを set に設定した場合、次の点に注意してください:

  • column パラメーターが設定されていない場合、Redis に保存される値はデリミタで連結された文字列です。たとえば、CSV ソースファイルでは、id の値は 1、name の値は Bob、age の値は 18、sex の値は male です。この場合、Redis に書き込まれる値は "18::male" です。

  • column パラメーターが "column": [{"index":"0", "name":"id"}, {"index":"1", "name":"name"}] 形式で設定されている場合、値は {"id":"ソース列の値","name":"ソース列の値"} の JSON 形式で Redis に保存されます。たとえば、id の値が 1 で、name の値が Bob の場合、Redis に保存される値は {"id":"1","name":"Bob"} です。

いいえ

デフォルト値なし

writeMode パラメーターの説明

Redis Writer を設定するとき、writeMode パラメーターには 1 つのデータ型しか指定できません。このパラメーターを設定しない場合、デフォルト値の string が使用されます。

値のデータ型

type パラメーター (必須)

mode パラメーター (必須)

valueFieldDelimiter パラメーター (オプション)

writeMode パラメーターの設定例

STRING

type パラメーターを string に設定します。

Redis Writer が STRING タイプのデータを Redis に書き込む際のモード。type パラメーターを string に設定する場合は、以下のルールに注意してください:

  • mode パラメーターを set に設定します。

  • Redis に書き込むデータが Redis に既に存在する場合、既存のデータは上書きされます。

列の値を区切るために使用する デリミタ。デフォルト値: \u0001

  • 値として 2 つ以上の列を指定する場合、このパラメーターは必須です。たとえば、ソースデータの 3 つの列を値として指定し、デフォルトのデリミタを使用する場合、列の値は value1\u0001value2\u0001value3 形式で連結されます。

  • 値として 1 つの列のみを指定する場合、このパラメーターは不要です。

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

LIST

type パラメーターを list に設定します。

mode は、Redis Writer が LIST 型のデータを Redis に書き込むモードです。有効な値:

  • lpush: データがリストの左端に保存されることを示します。

  • rpush: データがリストの右端に保存されることを示します。

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

SET

type パラメーターを set に設定します。

Redis Writer が SET 型のデータを Redis に書き込む際のmode です。type パラメーターをセットに設定する場合は、次のルールに注意してください:

  • mode パラメーターを sadd に設定します。これは、データがセットに保存されることを示します。

  • Redis に書き込むデータが Redis に既に存在する場合、既存のデータは上書きされます。

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

ZSET (ソート済みセット)

type パラメーターを zset に設定します。

Redis Writer が ZSET 型のデータを Redis に書き込む際の mode です。type パラメーターを zset に設定する場合は、次のルールに注意してください。

  • mode パラメーターを zadd に設定します。これは、データがソートセットに格納されることを示します。

  • Redis に書き込むデータが Redis に既に存在する場合、既存のデータは上書きされます。

このパラメーターを設定する必要はありません。

"writeMode":{
        "type": "zset",
        "mode": "zadd"
        }
説明

データ型が ZSET に設定されている場合、ソースデータの各行は次の要件を満たす必要があります: 行には、キーを除いて 1 つのスコアと 1 つの値のみを含めることができます。スコアは値の前に配置する必要があります。これにより、Redis Writer はスコアと値を区別できます。

HASH

type パラメーターを hash に設定します。

Redis Writer がハッシュ型のデータを Redis に書き込む際のモードです。type パラメーターをハッシュに設定する場合は、以下のルールにご注意ください。

  • mode パラメーターを hset に設定します。これは、データがハッシュソートセットに保存されることを示します。

  • Redis に書き込むデータが Redis に既に存在する場合、既存のデータは上書きされます。

このパラメーターを設定する必要はありません。

"writeMode":{
        "type": "hash",
        "mode": "hset"
        }
説明

データ型が HASH に設定されている場合、ソースデータの各行は次の要件を満たす必要があります: 行には、キーを除いて 1 つの属性と 1 つの値のみを含めることができます。属性は値の前に配置する必要があります。これにより、Redis Writer は属性と値を区別できます。