Lab ini menunjukkan perbedaan akses data tanpa cache dan dengan cache menggunakan Redis.
redis: penyimpanan cache in-memory.app: aplikasi Express dengan endpoint uji cache.tester: container untuk menjalankan Apache Benchmark (ab).
Semua service berada pada network lab-net.
GET /slow- Simulasi proses lambat (
100ms) tanpa cache.
- Simulasi proses lambat (
GET /fast- Cek Redis key
key. - Jika ada: kirim data dari cache (cache hit).
- Jika belum ada: tunggu
100ms, simpan ke Redis dengan TTL10 detik, lalu kirim respons (cache miss).
- Cek Redis key
GET /stats- Menampilkan statistik cache:
hitmisstotalhitRatecacheKeycacheTtlSeconds
- Menampilkan statistik cache:
POST /stats/reset- Reset counter hit/miss di aplikasi.
Jalankan dari folder ini:
docker compose up -dCatatan: aplikasi app memakai Node.js bawaan tanpa dependency npm tambahan, jadi startup biasanya cepat dan konsisten.
Cek status container:
docker compose psLihat log aplikasi:
docker logs -f lab-appGunakan urutan berikut agar hasil lebih konsisten dan mudah dibaca.
docker exec lab-tester ab -n 100 -c 10 http://app:3000/slowIni memberi referensi performa endpoint yang selalu lambat.
docker exec lab-tester sh -c "wget -qO- --post-data='' http://app:3000/stats/reset"docker exec lab-tester ab -n 5 -c 1 http://app:3000/fastTujuan warm-up adalah memastikan key cache sudah terbentuk sebelum tes utama.
docker exec lab-tester ab -n 200 -c 20 -l http://app:3000/fastGunakan -l karena respons /fast bisa memiliki panjang berbeda antara miss dan hit.
docker exec lab-tester wget -qO- http://app:3000/statsJika warm-up berhasil, nilai hit biasanya jauh lebih tinggi daripada miss.
- Jalankan tes
/fast. - Tunggu lebih dari 10 detik.
- Jalankan lagi tes
/fast.
Pada request awal setelah TTL habis, akan muncul miss lagi sebelum hit kembali dominan.
docker compose down