Kodeloka
  1. Kodeloka
  2. Kelas Redis
  3. Materi

Security ยท Modul 20 dari 21

Redis Persistence, Security & Best Practices

Strategi persistensi data RDB vs AOF, otentikasi password, ACL, serta menghindari 8 Kesalahan Fatal saat menggunakan Redis.

๐Ÿ“Œ Ringkasan Eksekutif Modul:
Redis mendukung persistensi data ke disk melalui RDB (Snapshot) dan AOF (Append-Only Log). Keamanan dikontrol melalui AUTH, ACL, dan pengaturan jaringan.

1. Mekanisme Persistensi Data (RDB vs AOF)

Meskipun Redis bekerja di RAM, data dapat disimpan ke piringan disk agar tidak hilang saat server restart atau mati lampu:

  • RDB (Redis Database Snapshot): Mengambil foto snapshot seluruh isi RAM pada interval waktu tertentu (misal setiap 5 menit) dan menyimpannya sebagai file biner ringkas dump.rdb. Sangat cepat untuk recovery, namun ada potensi data hilang beberapa menit terakhir saat crash.
  • AOF (Append-Only File): Mencatat setiap perintah penulisan (SET, HSET, DEL) ke dalam log teks appendonly.aof secara real-time. Sangat aman dari kehilangan data, tetapi ukuran file log bisa membesar.
  • Hybrid Persistence (Default Redis 6+): Menggabungkan header RDB dengan tail AOF log untuk mendapatkan recovery super cepat sekaligus aman.

2. Keamanan Redis & Authentication

redis.conf / Security Config
# 1. Batasi interface jaringan (Jangan pernah expose port 6379 ke 0.0.0.0 publik!)
bind 127.0.0.1 ::1

# 2. Pasang Password Otentikasi
requirepass SuperSecretPassword123!

# 3. Rename / Disable Perintah Berbahaya
rename-command KEYS ""
rename-command FLUSHALL ""
rename-command CONFIG "MY_SECRET_CONFIG_CMD"
๐Ÿšซ 8 Kesalahan Fatal Menggunakan Redis di Production:
  1. Menggunakan perintah KEYS * di production (memblokir thread tunggal Redis hingga server hang!). Gunakan SCAN.
  2. Lupa memasukkan Expiration (TTL) pada data cache hingga RAM server habis penuh.
  3. Membuka port 6379 ke publik tanpa password.
  4. Mengabaikan konfigurasi maxmemory-policy (misal tidak diset allkeys-lru).
  5. Menyimpan satu objek raksasa (> 100MB) di satu Key String.
  6. Menggunakan Redis sebagai satu-satunya Primary Database tanpa backup RDB/AOF.
  7. Tidak menggunakan Pipelining/MSET saat menginput data secara masal.
  8. Membuat ribuan koneksi TCP baru setiap request alih-alih menggunakan Connection Pooling.