๐ Ringkasan Eksekutif Modul:
Redis Transaction memungkinkan eksekusi sekumpulan perintah secara atomic dan terisolasi. Perintah `WATCH` menyediakan Optimistic Locking (Check-and-Set).
Redis Transaction memungkinkan eksekusi sekumpulan perintah secara atomic dan terisolasi. Perintah `WATCH` menyediakan Optimistic Locking (Check-and-Set).
1. Konsep Redis Transaction
Transaksi di Redis menjamin bahwa sekumpulan perintah diantrekan (queued) dan dieksekusi secara Sequential & Atomic tanpa ada interupsi atau penyisipan perintah dari client lain di tengah proses.
2. Sintaks Utama Transaksi
MULTI: Menandai awal dari blok transaksi. Perintah setelah ini tidak langsung dieksekusi, melainkan dimasukkan ke dalam antrean (QUEUED).EXEC: Mengeksekusi seluruh perintah yang ada di dalam antrean transaksi secara sekuensial.DISCARD: Membatalkan transaksi dan mengosongkan antrean perintah.
redis-cli
# Memulai Transaksi Transfer Saldo Bank
MULTI
DECRBY wallet:user:A 50000
INCRBY wallet:user:B 50000
EXEC # Kedua perintah dieksekusi bersamaan secara atomic!
3. Optimistic Locking dengan WATCH (Check-and-Set)
Perintah WATCH digunakan untuk memantau satu atau beberapa key sebelum transaksi dimulai. Jika ada client lain yang merubah nilai key yang di-watch sebelum EXEC dipanggil, maka seluruh transaksi akan batal secara otomatis (EXEC mengembalikan nil).
redis-cli
WATCH product:stock:99
GET product:stock:99 # Misal stok bernilai 1
MULTI
DECR product:stock:99
EXEC # Jika client lain merubah stok di tengah jalan, EXEC akan GAGAL!
โ ๏ธ Perbedaan Penting Redis Transaction vs RDBMS SQL:
Redis TIDAK mendukung Rollback bertingkat di tengah transaksi jika ada sintaks perintah logika yang salah. Jika satu command gagal secara runtime, command lainnya dalam EXEC tetap akan diproses.
Redis TIDAK mendukung Rollback bertingkat di tengah transaksi jika ada sintaks perintah logika yang salah. Jika satu command gagal secara runtime, command lainnya dalam EXEC tetap akan diproses.