All Products
Search
Document Center

DataWorks:Redis

Last Updated:Apr 25, 2026

DataWorks Data Integration memungkinkan Anda menggunakan Redis Writer untuk menulis data ke Redis. Topik ini menjelaskan cara melakukan penulisan batch ke sumber data Redis dengan menggunakan DataWorks.

Batasan

  • Tugas impor data dapat dijalankan pada serverless resource groups (disarankan) dan exclusive resource groups for Data Integration.

  • Saat menggunakan Redis Writer untuk menulis data, menjalankan ulang tugas sinkronisasi bukanlah operasi idempoten jika nilai tersebut berupa List. Oleh karena itu, jika nilainya berupa List, Anda harus menghapus data terkait dari Redis secara manual sebelum menjalankan ulang tugas tersebut.

    Penting

    Redis saat ini tidak mendukung konfigurasi Bloom filter. Untuk menangani data duplikat, Anda dapat menggunakan solusi alternatif: tambahkan node, seperti node Shell, Python, atau PyODPS, sebelum atau sesudah node sinkronisasi dalam alur kerja Anda untuk melakukan deduplikasi.

Tipe data yang didukung

Redis mendukung berbagai tipe data nilai, termasuk String, List, Set, ZSet (sorted set), dan Hash. Untuk informasi lebih lanjut tentang Redis, lihat redis.io.

Pengembangan tugas sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Lampiran: Contoh kode dan parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Gunakan Editor Kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh kode Writer

Kode berikut adalah contoh tugas sinkronisasi data yang membaca data dari database MySQL dan menulisnya ke Redis. Kode ini menampilkan contoh untuk MySQL Reader dan Redis Writer.

{
    "type":"job",
    "version":"2.0",  // Nomor versi.
    "steps":[
        { // Berikut ini adalah contoh kode untuk Reader. Untuk informasi lebih lanjut tentang parameter Reader, lihat dokumentasi plugin Reader yang sesuai.
            "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"
        },
        {// Berikut ini adalah contoh kode untuk Writer.
            "stepType":"redis",                    // Nama plugin untuk Redis Writer. Atur parameter ini ke redis.
            "parameter":{                          // Bagian berikut menjelaskan parameter utama Redis Writer.
                "expireTime":{                     // Waktu kedaluwarsa cache untuk nilai Redis. Anda dapat mengatur parameter ini ke tipe seconds atau tipe unixtime."seconds":"1000"
                            }, 
                "keyFieldDelimiter":"u0001",       // Pembatas untuk kunci Redis.
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// Format tanggal yang digunakan saat data ditulis ke Redis.
                "datasource":"xc_mysql_demo2",     // Nama sumber data. Harus sama dengan nama sumber data yang telah Anda tambahkan.
                "envType": 0,                      // Tipe lingkungan. Lingkungan pengembangan: 1. Lingkungan produksi: 0.
                "writeMode":{                      // Mode penulisan.
                    "type":"string"                // Tipe nilai.
                    "mode":"set",                  // Mode penulisan untuk tipe nilai tertentu.
                    "valueFieldDelimiter":"u0001", // Pembatas antar nilai.
                             },
                "keyIndexes":[0,1],                // Digunakan untuk pemetaan dari sumber ke Redis. Menentukan kolom sumber yang akan digunakan sebagai kunci (kolom pertama dimulai dari 0). Misalnya, jika kolom pertama dan kedua dari sumber digabung sebagai kunci Redis, atur parameter ini ke [0,1].
                "batchSize":"1000"                 // Jumlah catatan dalam setiap batch.
        "column": [                        // Untuk tipe Redis string dengan operasi set: jika kolom ini tidak dikonfigurasi, format nilainya adalah string yang dipisahkan pembatas (format CSV. Misalnya ID=1, name="John", age=18, sex=male, contoh nilai Redis: "18::male"). Jika kolom dikonfigurasi dalam format berikut, nilai Redis akan ditulis dalam format JSON. Misalnya ID=1, name="John", age=18, sex=male, contoh nilai 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"                           // Jumlah error.
        },
        "speed":{
            "throttle":true,// Saat throttle diatur ke false, parameter mbps tidak berlaku, artinya pembatasan kecepatan dinonaktifkan. Saat throttle diatur ke true, pembatasan kecepatan diaktifkan.
            "concurrent":1, // Konkurensi job.
            "mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter Writer

Parameter

Deskripsi

Wajib

Nilai default

expireTime

Waktu kedaluwarsa cache untuk nilai Redis, dalam satuan detik. Jika parameter ini tidak ditentukan, nilai default 0 digunakan, yang menunjukkan bahwa data tidak pernah kedaluwarsa.

Anda dapat mengonfigurasi expireTime dengan salah satu dari dua cara berikut:

  • seconds: menentukan berapa lama dari sekarang hingga data kedaluwarsa. Nilainya adalah jumlah detik dari waktu saat ini hingga waktu kedaluwarsa.

  • unixtime: menentukan berapa lama dari 1 Januari 1970 hingga data kedaluwarsa. Nilainya adalah jumlah detik dari 1 Januari 1970 hingga waktu kedaluwarsa.

Tidak

0 (0 menunjukkan bahwa data tidak pernah kedaluwarsa)

keyFieldDelimiter

Pembatas untuk kunci Redis. Misalnya, key=key1\u0001id. Parameter ini wajib jika beberapa kunci perlu digabungkan. Jika hanya satu kunci yang digunakan, Anda dapat melewati parameter ini.

Tidak

\u0001

dateFormat

Format tanggal yang digunakan saat data ditulis ke Redis: yyyy-MM-dd HH:mm:ss.

Tidak

N/A

datasource

Nama sumber data. Nilainya harus sama dengan nama sumber data yang telah Anda tambahkan.

Ya

N/A

selectDatabase

Database Redis yang akan ditulis ("0" hingga "N-1", di mana N adalah jumlah database yang dikonfigurasi di Redis). Pemilihan database tidak didukung untuk kluster Redis.

Tidak

Database 0 secara default

writeMode

Redis Writer mendukung lima tipe nilai berikut untuk menulis data ke Redis:

  • String

  • List

  • Set

  • ZSet (sorted set)

  • Hash

Konfigurasi writeMode sedikit berbeda tergantung pada tipe nilai. Untuk informasi lebih lanjut, lihat deskripsi parameter writeMode di bawah.

Catatan

Saat mengonfigurasi Redis Writer, Anda harus mengatur writeMode ke salah satu dari lima tipe data yang didukung, dan hanya satu tipe yang dapat ditentukan. Jika Anda tidak mengonfigurasi parameter ini, writeMode menggunakan nilai default string.

Tidak

string

keyIndexes

Menentukan indeks kolom dari kolom sumber yang akan digunakan sebagai kunci. Indeks kolom dimulai dari 0 (kolom pertama memiliki indeks 0, kolom kedua memiliki indeks 1, dan seterusnya).

  • Jika satu kolom sumber digunakan sebagai kunci Redis, atur parameter ini ke indeks kolom tersebut. Misalnya, jika kolom pertama digunakan sebagai kunci, atur parameter ini ke 0.

  • Jika beberapa kolom sumber berurutan digabung sebagai kunci Redis, atur parameter ini ke array indeks kolom yang sesuai. Misalnya, jika kolom kedua hingga keempat digabung sebagai kunci, atur parameter ini ke [1,3].

Catatan

Setelah Anda mengonfigurasi keyIndexes, Redis Writer menggunakan kolom yang tersisa sebagai nilai. Jika Anda ingin menyinkronkan hanya kolom tertentu sebagai kunci dan kolom lain sebagai nilai, Anda tidak perlu menyinkronkan semua kolom. Anda dapat menentukan parameter column di plugin Reader untuk memfilter kolom.

Ya

N/A

batchSize

Jumlah catatan dalam setiap batch. Parameter ini dapat secara signifikan mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan Redis, serta meningkatkan throughput keseluruhan. Jika nilai ini diatur terlalu besar, proses sinkronisasi data mungkin mengalami error kehabisan memori (OOM).

Tidak

1.000

timeout

Timeout untuk menulis data ke Redis, dalam satuan milidetik.

Tidak

30.000

redisMode

Mode berjalan Redis. Nilai yang valid:

  • Mode kluster: Atur redisMode ke ClusterMode untuk menunjukkan mode kluster.

    Dalam mode kluster, sumber data lain berkomunikasi langsung dengan kluster Redis saat menulis data ke Redis. Biasanya, alamat kluster Redis self-managed dan alamat koneksi langsung Alibaba Cloud Redis menggunakan mode ini. Mode kluster mendukung penulisan batch.

  • Mode non-kluster: Biarkan redisMode kosong (tidak mengonfigurasi nilai apa pun) untuk menunjukkan mode non-kluster.

    Biasanya, alamat proxy kluster Alibaba Cloud Redis, alamat pemisahan baca/tulis, dan alamat Edisi Standar menggunakan mode ini. Mode non-kluster saat ini tidak mendukung penulisan batch.

Catatan

Didukung pada serverless resource groups (disarankan) dan exclusive resource groups for Data Integration.

Tidak

N/A

column

Konfigurasi kolom untuk menulis data ke Redis. Untuk tipe Redis string dengan operasi set:

  • Jika kolom ini tidak dikonfigurasi, format nilainya adalah string yang dipisahkan pembatas (format CSV. Misalnya, jika ID=1, name="John", age=18, dan sex=male, contoh nilai Redis adalah: "18::male").

  • Jika kolom dikonfigurasi dalam format berikut, seperti "column": [{"index":"0", "name":"id"}, {"index":"1", "name":"name"}], data nilai Redis disimpan dalam format JSON setelah ditulis ke Redis, dalam format {"id":"nilai kolom sumber yang sesuai","name":"nilai kolom sumber yang sesuai"} . Misalnya, jika ID=1 dan name="John", contoh nilai Redis adalah {"id":"1","name":"John"}.

Tidak

N/A

Deskripsi parameter writeMode

Saat mengonfigurasi Redis Writer, Anda harus mengatur writeMode ke salah satu dari lima tipe data yang didukung, dan hanya satu tipe yang dapat ditentukan. Jika parameter ini tidak dikonfigurasi, writeMode akan menggunakan nilai default string.

Tipe nilai

Parameter type (wajib)

Parameter mode (wajib)

Parameter valueFieldDelimiter (opsional)

Contoh konfigurasi writeMode

String

Atur type ke string.

mode adalah parameter mode penulisan. Saat nilainya berupa string:

  • Atur mode ke set.

  • Jika data yang akan disimpan sudah ada, data yang ada akan ditimpa.

valueFieldDelimiter adalah pembatas antar nilai. Nilai default-nya adalah \u0001.

  • Parameter ini terutama digunakan ketika terdapat lebih dari dua kolom dalam setiap baris data sumber. Misalnya, jika terdapat tiga kolom, nilai-nilainya dipisahkan oleh pembatas sebagai berikut: value1\u0001value2\u0001value3.

  • Jika data sumber hanya memiliki dua kolom (kunci dan nilai), Anda tidak perlu mengonfigurasi parameter ini.

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

List

Atur type ke list.

mode adalah parameter mode penulisan. Saat nilainya berupa list, opsi berikut tersedia:

  • lpush: menyimpan data di posisi paling kiri list.

  • rpush: menyimpan data di posisi paling kanan list.

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

Set

Atur type ke set.

mode adalah parameter mode penulisan. Saat nilainya berupa set:

  • Atur mode ke sadd untuk menyimpan data dalam set.

  • Jika data yang akan disimpan sudah ada, data yang ada akan ditimpa.

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

ZSet (sorted set)

Atur type ke zset.

mode adalah parameter mode penulisan. Saat nilainya berupa ZSet (sorted set):

  • Atur mode ke zadd untuk menyimpan data dalam sorted set.

  • Jika data yang akan disimpan sudah ada, data yang ada akan ditimpa.

Parameter ini tidak perlu dikonfigurasi.

"writeMode":{
        "type": "zset",
        "mode": "zadd"
        }
Catatan

Saat tipe nilai adalah zset, setiap baris data sumber harus mengikuti format yang sesuai. Setiap baris hanya boleh berisi satu pasangan score-value selain kunci, dan score harus mendahului nilai agar Redis Writer dapat mengidentifikasi kolom mana yang sesuai dengan score dan mana yang sesuai dengan nilai.

Hash

Atur type ke hash.

mode adalah parameter mode penulisan. Saat nilainya berupa hash:

  • Atur mode ke hset untuk menyimpan data dalam hash.

  • Jika data yang akan disimpan sudah ada, data yang ada akan ditimpa.

Parameter ini tidak perlu dikonfigurasi.

"writeMode":{
        "type": "hash",
        "mode": "hset"
        }
Catatan

Saat tipe nilai adalah hash, setiap baris data sumber harus mengikuti format yang sesuai. Setiap baris hanya boleh berisi satu pasangan attribute-value selain kunci, dan attribute harus mendahului nilai agar Redis Writer dapat mengidentifikasi kolom mana yang sesuai dengan attribute dan mana yang sesuai dengan nilai.