All Products
Search
Document Center

Data Transmission Service:Ketidakkonsistenan data setelah sinkronisasi Redis

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara mengidentifikasi dan mengatasi ketidakkonsistenan data setelah sinkronisasi Redis.

Deskripsi masalah

Setelah Anda menggunakan Data Transmission Service (DTS) untuk menyinkronkan Redis, data antara sumber dan tujuan tidak konsisten.

Contoh

Setelah menggunakan Data Transmission Service (DTS) untuk menyinkronkan data Redis, Anda menjalankan perintah info keyspace guna memeriksa kunci di sumber dan tujuan. Output menunjukkan ketidakkonsistenan data, dengan proporsi besar kunci memiliki waktu kedaluwarsa.

xxx> info keyspace
# Keyspace
db0:keys=769509,expires=227386,avg_ttl=3426607441
db3:keys=254,expires=0,avg_ttl=0
db2:keys=17,expires=2,avg_ttl=837582
db1:keys=2,expires=0,avg_ttl=0
db15:keys=2,expires=0,avg_ttl=0
[work@rec01 bin]$ ./redis-cli -a 'xxx'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=772864,expires=230736,avg_ttl=3380950183
db1:keys=2,expires=0,avg_ttl=0
db2:keys=17,expires=2,avg_ttl=868931
db3:keys=254,expires=0,avg_ttl=0
db15:keys=2,expires=0,avg_ttl=0
127.0.0.1:6379>

Penyebab

Mengandalkan nilai expires dari perintah info keyspace saja untuk memverifikasi konsistensi data bersifat menyesatkan karena perintah tersebut memberikan perkiraan, bukan nilai pasti.

  • Dalam output perintah info keyspace:

    • keys menunjukkan jumlah total kunci.

    • expires menunjukkan jumlah kunci yang memiliki waktu kedaluwarsa, termasuk kunci yang belum maupun sudah kedaluwarsa.

Oleh karena itu, saat Anda menggunakan nilai expires untuk memeriksa konsistensi, kunci yang secara logis telah kedaluwarsa tetapi belum dihapus secara aktif oleh Redis tetap dihitung. Hal ini menyebabkan ketidakkonsistenan data yang tampak antara sumber dan tujuan.

Catatan

Redis menghapus kunci yang kedaluwarsa dalam kondisi berikut:

  • Redis secara berkala membersihkan kunci kedaluwarsa saat CPU menganggur.

  • Saat sebuah kunci diakses, Redis memeriksa apakah kunci tersebut telah kedaluwarsa dan menghapusnya jika iya.

  • Selama operasi SCAN, Redis memeriksa dan menghapus kunci kedaluwarsa yang ditemui.

Untuk informasi lebih lanjut tentang kebijakan penggantian kunci kedaluwarsa di Redis, lihat How Redis Handles Expired Keys.

Solusi

Untuk memverifikasi konsistensi data, gunakan salah satu metode berikut:

Catatan

Saat memeriksa kemungkinan loss data setelah sinkronisasi, jangan hanya mengandalkan statistik expires, karena mencakup data yang telah kedaluwarsa sehingga membuat nilai expires menjadi ukuran konsistensi yang tidak andal.

  1. Untuk database sumber dan tujuan, gunakan jumlah keys dan kurangi dengan jumlah expires untuk mendapatkan jumlah kunci permanen. Jika selisih hasil antara kedua database sangat kecil, data dapat dianggap konsisten.

  2. Gunakan tool redis-full-check untuk verifikasi. Untuk informasi lebih lanjut, lihat Use the redis-full-check tool.

Catatan

Bagaimana cara membuat jumlah kunci dalam output info keyspace tampak konsisten?

Kami menyarankan untuk membersihkan data Redis yang telah kedaluwarsa. Metode untuk database cloud dan database yang dikelola sendiri adalah sebagai berikut:

  • Tair (Redis OSS-Compatible): Masuk ke Konsol Tair (Redis OSS-Compatible) dan gunakan fitur Clear Data. Untuk ApsaraDB for Redis, buka kotak dialog Clear Data di Konsol, pilih tab Expired Data, pilih waktu eksekusi (Immediately atau Within Maintenance Window), lalu klik OK. Aksi ini menjalankan perintah SCAN untuk menghapus semua data kedaluwarsa sekaligus dari instans. Operasi ini tidak dapat dikembalikan, dan data yang dihapus tidak dapat dipulihkan.

  • Database Redis yang dikelola sendiri: Gunakan tool redis-full-check untuk menjalankan verifikasi. Tool ini mengeksekusi perintah seperti SCAN, yang memicu pembersihan data kedaluwarsa selama proses berlangsung.