Gunakan Redis Writer di Data Integration DataWorks untuk menulis data ke sumber data Redis. Topik ini menjelaskan cara mengonfigurasi Redis Writer guna melakukan sinkronisasi data offline.
Batasan
Anda dapat menjalankan job sinkronisasi pada kelompok sumber daya arsitektur tanpa server untuk Data Integration (disarankan) atau kelompok sumber daya eksklusif untuk Data Integration.
Jika Anda menggunakan tipe data List, menjalankan ulang job sinkronisasi bukanlah operasi idempoten. Anda harus menghapus data dari Redis secara manual sebelum menjalankan ulang job tersebut.
PentingRedis Writer tidak mendukung konfigurasi Bloom filter. Sebagai solusi alternatif untuk menangani data duplikat, Anda dapat menambahkan node, seperti node Shell, Python, atau PyODPS, sebelum atau sesudah node sinkronisasi dalam alur kerja Anda.
Tipe data yang didukung
Redis mendukung berbagai tipe nilai, termasuk String, List, Set, Sorted Set, dan Hash. Untuk informasi lebih lanjut tentang Redis, lihat redis.io.
Konfigurasi job sinkronisasi
Untuk informasi mengenai titik masuk dan prosedur konfigurasi task sinkronisasi, lihat panduan konfigurasi berikut.
Untuk prosedur lengkapnya, lihat Konfigurasi task di Antarmuka tanpa kode dan Konfigurasi task di editor kode.
Untuk semua parameter dan contoh skrip dalam mode skrip, lihat apendiks di bawah ini.
Apendiks: Contoh skrip dan parameter
Konfigurasi task sinkronisasi batch menggunakan editor kode
Jika Anda ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasi task di editor kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengonfigurasi task sinkronisasi batch menggunakan editor kode.
Contoh skrip Writer
Contoh skrip berikut menunjukkan job sinkronisasi yang menggunakan MySQL Reader untuk membaca data dari sumber MySQL dan Redis Writer untuk menulis data ke tujuan Redis.
{
"type":"job",
"version":"2.0", // Nomor versi.
"steps":[
{ // Kode berikut ini untuk reader. Untuk detail parameter, 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"
},
{// Kode berikut ini untuk writer.
"stepType":"redis", // Nama plugin. Atur ke redis untuk Redis Writer.
"parameter":{ // Parameter utama untuk Redis Writer.
"expireTime":{ // Waktu kedaluwarsa untuk pasangan kunci-nilai. Anda dapat mengonfigurasinya dalam satuan detik atau sebagai timestamp Unix.
"seconds":"1000"
},
"keyFieldDelimiter":"u0001", // Delimiter untuk menggabungkan beberapa kolom menjadi kunci Redis.
"dateFormat":"yyyy-MM-dd HH:mm:ss",// Format untuk nilai bertipe Date saat ditulis ke Redis.
"datasource":"xc_mysql_demo2", // Nama sumber data. Harus sesuai dengan nama sumber data yang telah Anda tambahkan.
"envType": 0, // Jenis lingkungan. 0 untuk lingkungan produksi, 1 untuk lingkungan pengembangan.
"writeMode":{ // Mode penulisan.
"type":"string", // Tipe nilai.
"mode":"set", // Mode penulisan untuk tipe nilai yang ditentukan.
"valueFieldDelimiter":"u0001" // Delimiter untuk menggabungkan beberapa kolom menjadi nilai.
},
"keyIndexes":[0,1], // Memetakan kolom sumber ke kunci Redis. Menentukan indeks kolom sumber yang akan digunakan sebagai kunci. Indeks kolom dimulai dari 0. Jika Anda menggunakan kolom pertama dan kedua sebagai kunci komposit, atur nilai ini menjadi [0,1].
"batchSize":"1000", // Jumlah catatan yang ditulis dalam satu batch.
"column": [ // Parameter ini berlaku untuk operasi set pada tipe data String. Jika Anda tidak mengonfigurasi parameter ini, nilainya adalah string nilai yang digabungkan dengan delimiter (format CSV). Misalnya, jika nilai age adalah 18 dan nilai sex adalah male, nilai Redis-nya adalah "18::male". Jika Anda mengonfigurasi parameter ini seperti yang ditunjukkan, nilai ditulis dalam format JSON, termasuk nama kolom asli dan nilainya. Misalnya, jika id adalah 1, name adalah "John", age adalah 18, dan sex adalah "male", nilai Redis-nya adalah {"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 maksimum catatan error yang diizinkan.
},
"speed":{
"throttle":true, // Mengaktifkan atau menonaktifkan pembatasan kecepatan. Jika diatur ke false, parameter mbps diabaikan.
"concurrent":1, // Konkurensi job.
"mbps":"12" // Laju transfer maksimum dalam MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter Writer
Parameter | Deskripsi | Wajib | Bawaan |
expireTime | Waktu kedaluwarsa untuk kunci di Redis. Jika Anda tidak menentukan parameter ini, nilai bawaan Anda dapat mengonfigurasi expireTime dengan salah satu cara berikut:
| Tidak | 0 (Kunci tidak pernah kedaluwarsa.) |
keyFieldDelimiter | Delimiter yang digunakan untuk menggabungkan beberapa kolom menjadi kunci Redis, misalnya key=key1\u0001id. Parameter ini wajib ketika Anda menggabungkan beberapa kolom menjadi satu kunci. Anda dapat mengabaikan parameter ini jika kuncinya hanya terdiri dari satu kolom. | Tidak | \u0001 |
dateFormat | Format untuk nilai bertipe Date saat ditulis ke Redis, seperti yyyy-MM-dd HH:mm:ss. | Tidak | Tidak ada |
datasource | Nama sumber data. Nama ini harus sesuai dengan yang Anda konfigurasi di Konsol DataWorks. | Ya | Tidak ada |
selectDatabase | Indeks database tujuan. Nilai yang valid berkisar dari | Tidak | Bawaan ke database 0. |
writeMode | Tipe data nilai yang akan ditulis ke Redis. Redis Writer mendukung lima tipe berikut:
Konfigurasi writeMode bervariasi tergantung tipe datanya. Untuk detailnya, lihat bagian parameter writeMode di bawah ini. Catatan Anda harus mengonfigurasi writeMode dengan salah satu dari lima tipe data yang didukung. Hanya satu tipe yang diizinkan. Jika Anda tidak mengonfigurasi parameter ini, nilai bawaan | Tidak | string |
keyIndexes | Indeks kolom sumber berbasis nol yang digunakan untuk kunci Redis.
Catatan Redis Writer menggunakan semua kolom yang tidak ditentukan dalam keyIndexes sebagai nilai. Untuk menyinkronkan hanya kolom tertentu, konfigurasikan parameter column di plugin Reader untuk memfilternya. | Ya | Tidak ada |
batchSize | Jumlah catatan yang ditulis dalam satu batch. Nilai yang lebih besar dapat mengurangi interaksi jaringan dengan Redis dan meningkatkan throughput. Namun, mengatur nilai ini terlalu tinggi dapat menyebabkan error kehabisan memori (OOM) pada proses job sinkronisasi. | Tidak | 1000 |
timeout | Timeout operasi penulisan dalam milidetik. | Tidak | 30000 |
redisMode | Mode penyebaran Redis. Nilai yang valid:
Catatan | Tidak | Tidak ada |
column | Konfigurasi kolom yang akan ditulis ke Redis. Parameter ini berlaku ketika `writeMode.type` adalah `string` dan `writeMode.mode` adalah `set`.
| Tidak | Tidak ada |
Parameter writeMode
Tipe nilai | Parameter type | Parameter mode | Parameter valueFieldDelimiter | Contoh konfigurasi |
String | Atur type ke | Untuk tipe nilai String, mode menentukan mode penulisan:
| valueFieldDelimiter adalah delimiter untuk menggabungkan nilai. Nilai bawaannya adalah
| |
List | Atur type ke | Untuk tipe nilai List, mode dapat berupa salah satu berikut:
| | |
Set | Atur type ke | Untuk tipe nilai Set, mode menentukan mode penulisan:
| | |
Sorted Set | Atur type ke | Untuk tipe nilai Sorted Set, mode menentukan mode penulisan:
| Tidak diperlukan. | Catatan Ketika tipe nilai adalah `zset`, setiap catatan sumber harus menyediakan tepat satu pasangan score/member selain kolom kunci. Score harus mendahului member. Format ini memastikan bahwa Redis Writer dapat mengurai data dengan benar. |
Hash | Atur type ke | Untuk tipe nilai Hash, mode menentukan mode penulisan:
| Tidak diperlukan. | Catatan Ketika tipe nilai adalah `hash`, setiap catatan sumber harus menyediakan tepat satu pasangan field/nilai selain kolom kunci. Field harus mendahului nilai. Format ini memastikan bahwa Redis Writer dapat mengurai data dengan benar. |