Setup Redis
Redis dapat dijalankan menggunakan Docker untuk kebutuhan development:
docker run -d -p 6379:6379 redis:7-alpine
Untuk production, gunakan layanan managed seperti Redis Cloud, Upstash, atau Amazon ElastiCache. Pada Node.js, client seperti ioredis dapat digunakan untuk berkomunikasi dengan Redis.
Caching Pattern
Salah satu pola caching yang umum adalah cache-aside. Aplikasi terlebih dahulu memeriksa data di cache. Jika data tidak ditemukan, aplikasi mengambilnya dari database lalu menyimpannya ke Redis.
Setiap cache sebaiknya memiliki TTL (Time to Live) yang sesuai agar data tidak tersimpan terlalu lama. Strategi invalidation juga perlu ditentukan, misalnya berdasarkan waktu atau event tertentu.
Session Storage
Redis dapat digunakan sebagai penyimpanan session untuk aplikasi dengan banyak server. Pada Express, express-session dapat dikombinasikan dengan Redis store agar session tetap tersedia meskipun request diproses oleh server yang berbeda.
Berbeda dengan JWT, session server-side juga memungkinkan server mencabut session secara langsung ketika pengguna logout atau terjadi aktivitas mencurigakan.
Rate Limiting
Redis dapat membantu menerapkan rate limiting untuk membatasi jumlah request dari user dalam periode tertentu.
Pendekatan seperti sliding window dapat menggunakan sorted set untuk menyimpan timestamp request. Cara ini cocok untuk melindungi endpoint sensitif seperti login, register, dan API publik dari request berlebihan.
Pub/Sub Messaging
Redis Pub/Sub memungkinkan beberapa service bertukar pesan secara real-time.
Publisher dapat mengirim pesan menggunakan:
redis.publish('channel', message)
Service lain yang melakukan subscribe dapat menerima pesan tersebut dan menjalankan proses yang diperlukan.
Data Structures Redis
Redis menyediakan beberapa struktur data yang berguna untuk berbagai kebutuhan aplikasi:
-
String: cache dan counter
-
Hash: penyimpanan object atau session
-
List: queue dan timeline
-
Set: data unik dan membership
-
Sorted Set: leaderboard dan rate limiter
Pemilihan struktur data yang tepat dapat membuat implementasi Redis lebih efisien.
Kesimpulan
Redis bukan hanya digunakan sebagai cache. Dengan caching, session storage, rate limiting, Pub/Sub, dan berbagai data structure, Redis dapat menjadi komponen penting untuk membangun aplikasi yang cepat dan scalable.