Redis Entitlements Cache Layer
Sub-Millisecond Authorization Hash & Invalidation Strategy
Caching status langganan dan hak akses properti di memory Redis untuk validasi izin super cepat (<1ms) pada request STB berfrekuensi tinggi.
Diagram Alur Data & Arsitektur Sistem
Visual InteraktifDiagram Arsitektur Cache-Aside Redis & Fallback MongoDB
Lookup hak akses sub-milidetik untuk ribuan perangkat STB aktif
STB Device
Heartbeat & Channel Req
API Gateway
Fast Route Dispatch
Redis Memory Hash
SMEMBERS Lookup (<1ms)
MongoDB Master
Fallback Document Read
Invalidation Bus
Contract Expire Evict
Problem & Latar Belakang Kebutuhan
Ketika ribuan perangkat STB di berbagai hotel menyala secara bersamaan pada jam sibuk, melakukan kueri status kontrak ke MongoDB pada setiap heartbeat akan menimbulkan bottleneck database yang tidak perlu.
Implementasi Rekayasa Backend NestJS
Entitlements dan status kontrak properti di-cache di Redis menggunakan struktur Hash (HSET property:HTL-GRAND-01:entitlements). Validasi otorisasi selesai dalam waktu di bawah 1 milidetik. Cache di-invalidasi secara instan saat Admin memperbarui status kontrak di portal IPTV.
Aspek Model Database MongoDB
Pola Cache-Aside: kueri dicek pertama kali ke Redis. Jika cache miss, sistem membaca dokumen Property di MongoDB, lalu me-warm-up kembali key Redis dengan TTL terkonfigurasi.
Keamanan, Idempotensi & Kepatuhan SLA
Status kontrak SUSPENDED atau EXPIRED langsung meng-evict cache Redis sehingga siaran TV dapat dihentikan seketika tanpa jeda sinkronisasi.
// Redis Entitlement Lookup (Cache-Aside Pattern)
async getPropertyEntitlements(propertyCode: string): Promise<string[]> {
const cacheKey = `property:${propertyCode}:features`;
// 1. Cek memory Redis (< 1ms)
const cached = await this.redis.smembers(cacheKey);
if (cached && cached.length > 0) {
return cached;
}
// 2. Fallback baca MongoDB jika cache miss
const property = await this.propertyModel.findOne({ code: propertyCode });
if (!property || property.subscription.status !== 'ACTIVE') {
return [];
}
// 3. Warm-up Redis cache dengan TTL 3600 detik
await this.redis.sadd(cacheKey, ...property.subscription.features);
await this.redis.expire(cacheKey, 3600);
return property.subscription.features;
}Live Simulator & Execution Sandbox
RolesGuard verified caller is 'admin'. Idempotency Key verified in Redis. MongoDB document updated.
Contract for 'Grand Horizon Hotel & Resort' persisted into Property document with 1-Year validity.
Provisioned 1-Year Platinum Contract #PKS-2026-042 via manual B2B order.
Updated welcome video banner and personalized TV dining directory.
Eksplorasi Fitur Terkait Lainnya
Lihat Semua Fitur →Subscription Contract Engine
Provisioning langganan berbasis kontrak formal B2B dengan Idempotency Key, masa berlaku otomatis, dan fitur tersemat (embedded entitlements) pada dokumen MongoDB.
Multi-Tier Scoped RBAC
Hirarki 4 peran (Superadmin, Admin, Manager, Frontdesk) dengan pembatasan domain (scoping) ketat untuk mencegah kebocoran data antar-penyewa properti.
Property Content Management
Pengelolaan materi tayangan hotel (video sambutan kamar, menu amenities digital, banner promo) yang divalidasi dinamis terhadap paket kontrak aktif.
Automated Activity Audit Trail
Pencatatan riwayat audit append-only di koleksi MongoDB activity_logs untuk seluruh aksi administratif, mutasi kontrak, dan perubahan konten.
STB Device Pairing & Room Ops
Otomasi check-in & check-out tamu: pairing perangkat STB, personalisasi nama sambutan TV saat check-in, dan reset sesi privasi secara real-time saat check-out.