Kodeloka
  1. Kodeloka
  2. Kelas Redis
  3. Materi

Advanced ยท Modul 10 dari 21

Redis Transactions & Optimistic Locking

Memahami eksekusi atomic multi-command menggunakan MULTI, EXEC, DISCARD, dan Optimistic Locking dengan WATCH.

๐Ÿ“Œ Ringkasan Eksekutif Modul:
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.