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

DataWorks:Redis データソース

最終更新日:Feb 03, 2026

DataWorks Data Integration の Redis Writer を使用して、Redis データソースにデータを書き込みます。本トピックでは、オフラインデータ同期のための Redis Writer の構成方法について説明します。

制限事項

  • 同期ジョブは、Data Integration のサーバーレスリソースグループ(推奨)またはData Integration の専用リソースグループで実行できます。

  • List データ型を使用する場合、同期ジョブの再実行は冪等操作ではありません。ジョブを再実行する前に、Redis から手動でデータをクリアする必要があります。

    重要

    Redis Writer はブルームフィルターの構成をサポートしていません。重複データを処理する回避策として、ワークフロー内の同期ノードの前または後に、Shell、Python、または PyODPS ノードなどのノードを追加できます。

サポートされるデータの型

Redis は、文字列、リスト、セット、ソートセット、ハッシュなど、豊富な値の型をサポートしています。Redis の詳細については、redis.ioをご参照ください。

同期ジョブの構成

同期タスクのエントリポイントおよび構成手順については、以下の構成ガイドをご参照ください。

付録:スクリプトのサンプルとパラメーター

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

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

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 内のキーの有効期限。このパラメーターを指定しない場合、デフォルト値 0 が使用され、これはキーが永続的に有効であることを意味します。

expireTime は以下のいずれかの方法で構成できます。

  • seconds:現在時刻からキーが有効期限切れになるまでの秒数を指定します。

  • unixtime:UNIX タイムスタンプ(1970-01-01 00:00:00 UTC からの経過秒数)として有効期限を指定します。

いいえ

0(キーは永続的に有効です。)

keyFieldDelimiter

複数の列を連結して Redis キーを形成する際に使用するデリミタ。例:key=key1\u0001id。複数の列を組み合わせてキーを形成する場合、このパラメーターは必須です。キーが単一の列で構成される場合は、このパラメーターを省略できます。

いいえ

\u0001

dateFormat

Redis に書き込まれる日付型の値のフォーマット。例:yyyy-MM-dd HH:mm:ss

いいえ

なし

datasource

データソースの名前。この名前は、DataWorks コンソールで構成した名前と一致している必要があります。

はい

なし

selectDatabase

ターゲットデータベースのインデックス。有効値は "0" から "N-1" までで、N は Redis で構成された `databases` の数です。このパラメーターは Redis クラスターでは使用できません。

いいえ

デフォルトでデータベース 0 が使用されます。

writeMode

Redis に書き込まれる値のデータ型。Redis Writer は以下の 5 種類をサポートしています。

  • 文字列 (string)

  • リスト (list)

  • セット (set)

  • ソートセット (zset)

  • ハッシュ (hash)

writeMode の構成はデータ型によって異なります。詳細については、以下のwriteMode パラメーターセクションをご参照ください。

説明

writeMode には、サポートされている 5 種類のデータ型のいずれかを必ず構成する必要があります。複数の型を指定することはできません。このパラメーターを構成しない場合、デフォルト値 string が使用されます。

いいえ

string

keyIndexes

Redis キーとして使用するソース列のゼロ起点インデックス。

  • ソースの単一列を Redis キーとして使用する場合、そのインデックスを指定します。たとえば、最初の列をキーとして使用する場合、値を 0 に設定します。

  • 複数のソース列を複合 Redis キーとして使用する場合、配列でインデックスを指定します。たとえば、2 番目と 3 番目の列を複合キーとして使用する場合、[1,2] に設定します。

説明

Redis Writer は、keyIndexes で指定されていないすべての列を値として使用します。特定の列のみを同期する場合は、Reader プラグインの column パラメーターを構成してフィルタリングしてください。

はい

なし

batchSize

1 回のバッチで書き込むレコード数。値を大きくすると、Redis とのネットワーク通信回数が減り、スループットが向上します。ただし、この値を高すぎに設定すると、同期ジョブプロセスでメモリ不足(OOM)エラーが発生する可能性があります。

いいえ

1000

timeout

書き込み操作のタイムアウト時間(ミリ秒)。

いいえ

30000

redisMode

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

  • クラスターモードredisModeClusterMode に設定します。

    このモードでは、Redis Writer が Redis クラスターに直接接続します。通常、セルフマネージド Redis クラスターや、ダイレクト接続エンドポイントを持つ Alibaba Cloud Redis インスタンスで使用されます。クラスターモードではバッチ書き込みがサポートされています。

  • 非クラスターモードredisMode を空にするか、構成しません。

    このモードは通常、プロキシエンドポイント、読み書き分離エンドポイント、または Standard Edition のエンドポイントを持つ Alibaba Cloud Redis インスタンスで使用されます。非クラスターモードではバッチ書き込みはサポートされていません。

説明

いいえ

なし

column

Redis に書き込む列の構成。このパラメーターは、`writeMode.type` が `string` かつ `writeMode.mode` が `set` の場合に適用されます。

  • このパラメーターを構成しない場合、値はデリミタで区切られた連結値の文字列(CSV 形式)として書き込まれます。たとえば、レコードの値が `18` と `male` の場合、Redis 内の値は `"18::male"` となる可能性があります。

  • この パラメーター を、たとえば "column": [{"index":"0", "name":"id"}, {"index":"1", "name":"name"}] のように設定した場合、値は {"id":"<value_from_source>","name":"<value_from_source>"}</value_from_source></value_from_source> のような JSON フォーマット で書き込まれます。たとえば、`id` が `1` で `name` が `John` の場合、Redis 内の値は {"id":"1","name":"John"} になります。

いいえ

なし

writeMode パラメーター

値のデータ型

Type パラメーター

Mode パラメーター

valueFieldDelimiter パラメーター

サンプル構成

文字列

typestring に設定します。

文字列データ型の場合、mode は書き込みモードを指定します。

  • modeset に設定します。

  • キーがすでに存在する場合、その値は上書きされます。

valueFieldDelimiter は値を連結する際のデリミタです。デフォルト値は \u0001 です。

  • このパラメーターは、ソースデータ行に複数の値列がある場合に使用されます。たとえば、3 つの値列がある場合、それらはデリミタで連結され、value1\u0001value2\u0001value3 のようになります。

  • ソースデータにキー列と値列がそれぞれ 1 列しかない場合、このパラメーターを構成する必要はありません。

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

リスト

typelist に設定します。

リストデータ型の場合、mode は以下のいずれかになります。

  • lpush:要素をリストの先頭(左側)にプッシュします。

  • rpush:要素をリストの末尾(右側)にプッシュします。

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

セット

typeset に設定します。

セットデータ型の場合、mode は書き込みモードを指定します。

  • modesadd に設定して、メンバーをセットに追加します。

  • 同じ名前のキーが存在していても異なるデータ型の場合、その値は上書きされます。

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

ソートセット

typezset に設定します。

ソートセットデータ型の場合、mode は書き込みモードを指定します。

  • modezadd に設定して、メンバーをソートセットに追加します。

  • 同じ名前のキーが存在していてもソートセットでない場合、その値は上書きされます。

不要です。

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

値のデータ型が `zset` の場合、各ソースレコードはキー列に加えて、スコア/メンバーのペアを 1 つだけ提供する必要があります。スコアはメンバーの前に記述する必要があります。この形式により、Redis Writer がデータを正しく解析できるようになります。

ハッシュ

typehash に設定します。

ハッシュデータ型の場合、mode は書き込みモードを指定します。

  • modehset に設定して、ハッシュにデータを追加します。

  • 同じ名前のキーが存在していてもハッシュでない場合、その値は上書きされます。

不要です。

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

値のデータ型が `hash` の場合、各ソースレコードはキー列に加えて、フィールド/値のペアを 1 つだけ提供する必要があります。フィールドは値の前に記述する必要があります。この形式により、Redis Writer がデータを正しく解析できるようになります。