๐ Ringkasan Eksekutif Modul:
Redis (Remote Dictionary Server) adalah in-memory key-value data structure store open-source yang sangat cepat. Digunakan untuk caching, session management, message broker, dan real-time leaderboard.
Redis (Remote Dictionary Server) adalah in-memory key-value data structure store open-source yang sangat cepat. Digunakan untuk caching, session management, message broker, dan real-time leaderboard.
1. Apa itu Redis?
Redis (singkatan dari Remote Dictionary Server) adalah sistem penyimpanan data open-source berkinerja sangat tinggi yang berjalan sepenuhnya di dalam memori utama (RAM). Berbeda dari database relasional (seperti MySQL atau PostgreSQL) yang menyimpan data utama di piringan disk, Redis memanfaatkan RAM sehingga mampu melayani ratusan ribu transaksi per detik dengan latency sub-millisecond (kurang dari 1 milidetik).
๐ก Karakteristik Utama Redis:
- In-Memory Performance: Pembacaan dan penulisan data instan karena tidak ada I/O disk untuk operasi dasar.
- Rich Data Structures: Tidak hanya menyimpan teks/string, tetapi juga Hash, List, Set, Sorted Set, Bitmaps, HyperLogLog, dan Stream.
- Single-Threaded Architecture: Memanfaatkan event loop non-blocking (epoll/kqueue) yang efisien tanpa masalah race condition thread lock.
- Persistence Options: Data RAM dapat di-dump ke disk (RDB) atau di-append dalam log (AOF) untuk daya tahan saat restart server.
2. Perbandingan Architecture: RDBMS vs Disk NoSQL vs Redis
Berikut adalah perbandingan peran Redis di dalam arsitektur aplikasi modern:
- RDBMS (MySQL, PostgreSQL): Menyimpan data terstruktur dengan ACID compliance, relasi kompleks (JOIN), dan kueri analisis. Data disimpan di SSD/HDD. Read speed: 5ms - 50ms.
- Disk NoSQL (MongoDB): Menyimpan dokumen JSON terstruktur tanpa skema kaku di disk. Read speed: 2ms - 20ms.
- Redis (In-Memory Store): Menyimpan key-value & struktur data langsung di RAM. Read speed: 0.1ms - 1ms (sub-millisecond). Sangat cocok dipasang di depan RDBMS sebagai Caching Layer.
3. Modern Backend Use Cases
- Caching Layer: Menyimpan hasil query database yang sering diakses (seperti katalog produk) untuk meringankan beban RDBMS.
- Session Store: Menyimpan session login user (JWT/Session ID) lintas microservices secara terpusat.
- Rate Limiting: Membatasi jumlah request API per user/IP menggunakan Expiration TTL.
- Real-time Leaderboard: Mengurutkan skor pemain game secara otomatis menggunakan Sorted Set (ZSet).
- Pub/Sub & Event Queue: Pengiriman pesan real-time antar service dengan modul Publish/Subscribe.