---
title: "Cara Mengatur Persistensi Redis agar Data Tidak Hilang"
description: "Redis menyimpan data di RAM, tapi bisa ditulis ke disk lewat RDB, AOF, atau keduanya. Ini bedanya, cara mengaktifkan dengan aman, dan cara mengeceknya."
url: "https://nivelva.com/insight/cara-mengatur-persistensi-redis-data-tidak-hilang"
category: "Server \u0026 Infrastruktur"
tags: ["redis","persistensi","rdb","aof","database"]
author: "Lucas Tan"
published: "2026-11-11T12:45:00+07:00"
updated: "2026-11-11T12:45:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Mengatur Persistensi Redis agar Data Tidak Hilang

> **Jawaban singkat:** Redis punya dua cara menyimpan data ke disk. RDB membuat snapshot berkala dan bisa kehilangan data sejak snapshot terakhir. AOF mencatat setiap perintah tulis dan dengan appendfsync everysec umumnya hanya kehilangan sekitar satu detik. Untuk data penting, aktifkan keduanya.

Persistensi Redis adalah cara Redis menyalin data dari RAM ke disk, supaya isinya kembali utuh setelah service di-restart atau server reboot. Tanpa persistensi, Redis murni sebuah cache: begitu proses berhenti, semua data hilang.

Untuk cache halaman, kehilangan itu biasanya tidak masalah karena data bisa dibuat ulang. Lain cerita bila Redis menyimpan sesi login, antrean pekerjaan, keranjang belanja, atau penghitung yang tidak tercatat di tempat lain. Salah pilih setelan di sini bisa berarti pengguna logout massal atau pekerjaan antrean lenyap setelah server restart.

## Apa saja pilihan persistensi Redis?

### RDB, snapshot berkala

RDB menulis seluruh isi Redis ke satu file (biasanya `dump.rdb`) pada interval tertentu. Prosesnya berjalan di latar belakang lewat proses anak hasil `fork()`, jadi Redis tetap melayani permintaan.

Jadwalnya diatur dengan direktif `save <detik> <jumlah perubahan>`. Nilai bawaan Redis 7 adalah:

```text
save 3600 1 300 100 60 10000
```

Artinya simpan bila dalam 3600 detik ada minimal 1 perubahan, atau dalam 300 detik ada 100 perubahan, atau dalam 60 detik ada 10000 perubahan. Kelemahannya jelas: perubahan sejak snapshot terakhir hilang bila Redis mati mendadak. Kelebihannya, file RDB ringkas, cepat dimuat saat start, dan mudah dijadikan backup.

### AOF, catatan setiap perintah tulis

AOF (Append Only File) mencatat setiap perintah yang mengubah data. Saat Redis start, catatan itu diputar ulang untuk membangun kembali isinya. Seberapa sering catatan dipaksa tertulis ke disk diatur oleh `appendfsync`:

- `always`: setiap perintah. Paling aman, paling lambat.
- `everysec`: sekali per detik. Ini bawaan, dan dokumentasi Redis menyebutnya kompromi yang baik, dengan potensi kehilangan sekitar satu detik data.
- `no`: diserahkan ke sistem operasi. Paling cepat, tapi data yang hilang bisa lebih banyak.

File AOF terus membesar, jadi Redis menulis ulang (rewrite) secara otomatis di latar belakang. Sejak Redis 7, AOF disimpan sebagai beberapa file di folder `appendonlydir`, dan secara bawaan bagian dasarnya berformat RDB (`aof-use-rdb-preamble yes`) supaya pemuatan tetap cepat.

## Perbandingan RDB, AOF, dan keduanya

| Aspek | Tanpa persistensi | RDB saja | AOF saja | RDB + AOF |
|:--|:--|:--|:--|:--|
| Data hilang bila crash | Semua | Sejak snapshot terakhir | Sekitar 1 detik (everysec) | Sekitar 1 detik (everysec) |
| Ukuran file | Tidak ada | Kecil | Lebih besar | Keduanya |
| Kecepatan start ulang | Instan, tapi kosong | Cepat | Lebih lambat pada data besar | Dimuat dari AOF |
| Mudah dijadikan backup | Tidak | Sangat mudah | Lebih repot | Pakai file RDB |
| Cocok untuk | Cache murni | Data yang boleh hilang sebagian | Data penting | Data penting dengan backup rapi |

Saat AOF aktif, Redis memakai AOF untuk memulihkan data karena lebih lengkap. File RDB tetap berguna sebagai backup harian yang mudah dipindahkan.

## Kapan cukup RDB, kapan perlu AOF

Bila Redis dipakai sebagai cache dan data aslinya ada di MySQL atau PostgreSQL, RDB saja sudah cukup, bahkan persistensi boleh dimatikan sama sekali dengan `save ""` agar tidak ada beban `fork()`. Restart hanya membuat cache dingin sebentar, seperti dibahas di [memasang Redis untuk cache aplikasi](https://nivelva.com/insight/cara-pasang-redis-cache-aplikasi-vps).

Bila Redis menyimpan sesi, antrean job, rate limit yang harus konsisten, atau data apa pun yang tidak punya salinan di tempat lain, aktifkan AOF dengan `everysec` dan biarkan RDB tetap jalan untuk backup. Ini juga rekomendasi umum dari dokumentasi Redis untuk keamanan data yang mendekati database biasa.

## Cara mengaktifkan AOF tanpa kehilangan data

Jangan langsung mengubah `appendonly yes` di file konfigurasi lalu restart pada server yang sudah berisi data. Tergantung versi dan kondisi file di disk, Redis bisa memulai dengan AOF kosong dan mengabaikan isi RDB yang ada. Cara yang lebih aman adalah mengaktifkannya saat Redis berjalan:

```bash
redis-cli CONFIG SET appendonly yes
redis-cli INFO persistence | grep -E "aof_enabled|aof_rewrite_in_progress"
```

Tunggu sampai `aof_rewrite_in_progress:0`, artinya AOF awal sudah selesai ditulis dari data di memori. Setelah itu simpan setelan ke file konfigurasi:

```bash
redis-cli CONFIG REWRITE
```

Bila Redis dilindungi password atau ACL, tambahkan opsi autentikasi di `redis-cli`. Di Ubuntu, konfigurasi ada di `/etc/redis/redis.conf` dan data tersimpan di folder yang ditunjuk direktif `dir`, umumnya `/var/lib/redis`.

> **Persistensi bukan backup:**
>
> RDB dan AOF ada di disk server yang sama. Bila disk rusak, server terhapus, atau ada perintah FLUSHALL yang tidak sengaja, semuanya ikut hilang. Salin file RDB secara berkala ke tempat lain. Menyalin dump.rdb saat Redis berjalan aman, karena Redis menulis snapshot ke file sementara lalu menggantinya sekaligus.

## Bagaimana memastikan persistensi berjalan?

Jalankan `redis-cli INFO persistence` dan perhatikan beberapa baris ini: `rdb_last_bgsave_status` harus `ok`, `rdb_last_save_time` menunjukkan kapan snapshot terakhir, `aof_enabled` bernilai `1` bila AOF aktif, dan `aof_last_write_status` harus `ok`.

Secara bawaan, Redis menolak perintah tulis bila penyimpanan RDB terakhir gagal (`stop-writes-on-bgsave-error yes`). Ini sering muncul sebagai error `MISCONF` di aplikasi. Penyebab umumnya disk penuh, izin folder salah, atau `fork()` gagal karena memori. Untuk yang terakhir, Redis menyarankan `vm.overcommit_memory = 1` di sysctl.

Selain persistensi, pastikan Redis tidak terbuka ke internet. Langkahnya ada di [mengunci Redis dan MongoDB agar tidak terbuka publik](https://nivelva.com/insight/cara-mengunci-redis-mongodb-tidak-terbuka-publik). Bila kamu sedang mempertimbangkan Valkey, setelan RDB dan AOF di atas memakai nama yang sama, lihat [Redis atau Valkey](https://nivelva.com/insight/redis-vs-valkey).

## Pertanyaan yang sering diajukan

### Apakah AOF membuat Redis jauh lebih lambat?

Dengan appendfsync everysec, dampaknya umumnya kecil untuk kebanyakan aplikasi. Mode always jauh lebih berat karena setiap perintah tulis menunggu disk.

### Bagaimana memulihkan Redis dari file RDB?

Hentikan Redis, matikan sementara AOF bila aktif, letakkan dump.rdb di folder dir dengan pemilik user redis, lalu jalankan Redis. Setelah data kembali, aktifkan lagi AOF dengan CONFIG SET agar AOF dibangun dari data yang sudah dimuat.

### Kenapa muncul error MISCONF saat aplikasi menulis ke Redis?

Itu tanda penyimpanan RDB terakhir gagal. Cek log Redis, ruang disk, dan izin folder data. Jangan sekadar mematikan stop-writes-on-bgsave-error, karena masalah penyimpanannya tetap ada.

### Apakah memakai Redis sebagai cache tetap perlu persistensi?

Tidak wajib. Kalau semua data bisa dibangun ulang dari database utama, mematikan persistensi justru menghemat disk dan menghindari beban fork. Pastikan aplikasi tahan menghadapi cache yang kosong setelah restart.

## Sumber

- <https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/>
- <https://redis.io/docs/latest/operate/oss_and_stack/management/config-file/>
- <https://redis.io/docs/latest/commands/info/>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-mengatur-persistensi-redis-data-tidak-hilang
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
