0Pricing
AWS Solutions Architect · Pelajaran

Redis vs Memcached: Memilih Mesin yang Tepat

Bandingkan Redis (persistensi, replikasi, set terurut, pub/sub) dengan Memcached (kesederhanaan, multithreading), lalu pilih berdasarkan kebutuhan kasus penggunaan.

Redis vs Memcached: Memilih Mesin yang Tepat adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.

Apa Itu Amazon ElastiCache?

Amazon ElastiCache adalah layanan caching dalam memori yang dikelola sepenuhnya, sehingga Anda dapat dengan mudah menerapkan, mengelola, dan menskalakan penyimpanan data dalam memori sumber terbuka yang populer di cloud. Layanan ini mendukung dua Engine: Redis dan Memcached. Dengan menyajikan data yang sering diminta dari memori, bukan dari basis data, ElastiCache dapat mengurangi beban basis data secara drastis dan memangkas latensi respons dari milidetik menjadi mikrodetik. Memilih antara Redis dan Memcached merupakan pertanyaan umum dalam ujian SAA-C03.

Memcached: Kesederhanaan Murni

Memcached adalah penyimpanan key-value terdistribusi dalam memori yang berfokus pada kesederhanaan dan skalabilitas horizontal. Karakteristik utamanya: multi-threaded (dapat menggunakan semua inti CPU pada satu Node), penyimpanan key-value sederhana (hanya String, tanpa struktur data kompleks), tanpa persistensi (data hilang saat Node dimulai ulang), tanpa replikasi (tidak ada standby atau replika), dan sharding horizontal melalui hashing konsisten di sisi klien. Memcached adalah pilihan yang tepat saat Anda memerlukan cache sederhana berskala besar dan tidak memerlukan persistensi, tipe data kompleks, atau ketersediaan tinggi.

# Create a Memcached cluster with 3 nodes
aws elasticache create-cache-cluster \
  --cache-cluster-id my-memcached \
  --engine memcached \
  --cache-node-type cache.r7g.large \
  --num-cache-nodes 3 \
  --cache-subnet-group-name my-subnet-group

# Memcached auto-discovers nodes via the config endpoint
# Application connects to: my-memcached.cfg.use1.cache.amazonaws.com:11211

Redis: Penyimpanan Dalam Memori yang Kaya Fitur

Redis (Remote Dictionary Server) adalah penyimpanan struktur data dalam memori yang kaya fitur dan bersifat single-threaded (per instance), yang mendukung String, Hash, daftar, set, set terurut, bitmap, HyperLogLogs, stream, dan indeks geospasial. Keunggulan utamanya dibandingkan Memcached: persistensi opsional (snapshot AOF dan RDB), replikasi (replika baca dan pengalihan otomatis saat gagal), pesan pub/sub, skrip Lua, transaksi (MULTI/EXEC), dan Mode cluster untuk sharding horizontal. Redis adalah pilihan yang tepat untuk sebagian besar skenario caching di dunia nyata.

# Redis data structure examples

# String
# SET user:1:name 'Alice'
# GET user:1:name

# Hash (object-like)
# HSET product:42 name 'Widget' price '9.99' stock '100'
# HGETALL product:42

# Sorted set (leaderboard)
# ZADD leaderboard 9500 'alice' 8700 'bob' 9100 'carol'
# ZREVRANGE leaderboard 0 2 WITHSCORES

# Pub/Sub
# PUBLISH notifications 'order_shipped:12345'
# SUBSCRIBE notifications

Persistensi Redis: AOF dan RDB

Redis mendukung dua mekanisme persistensi: RDB (Redis Database) — snapshot pada titik waktu tertentu yang disimpan ke disk secara berkala dengan interval yang dapat dikonfigurasi (dimulai ulang dengan cepat, tetapi data di antara snapshot dapat hilang). AOF (Append-Only File) — mencatat setiap operasi penulisan; saat dimulai ulang, Redis memutar ulang catatan tersebut untuk membangun kembali status (daya tahan data dengan konsekuensi ukuran file yang lebih besar dan proses mulai ulang yang lebih lambat). Di ElastiCache, Anda dapat mengaktifkan AOF untuk mempertahankan data saat Node dimulai ulang. Hal ini penting ketika ElastiCache digunakan bukan hanya sebagai cache, tetapi juga sebagai penyimpanan data utama (misalnya untuk data sesi).

# Create an ElastiCache Redis cluster with AOF enabled
aws elasticache create-replication-group \
  --replication-group-id my-redis \
  --replication-group-description 'Redis with persistence' \
  --cache-node-type cache.r7g.large \
  --engine redis \
  --num-cache-clusters 2 \
  --cache-parameter-group-name default.redis7 \
  --snapshot-retention-limit 5

# Note: Enable AOF via parameter group: appendonly=yes

Replikasi Redis dan Pengalihan Otomatis Saat Gagal

Redis mendukung kelompok replikasi dengan satu Node utama yang menangani semua penulisan dan hingga 5 replika baca yang menangani pembacaan. Dengan Multi-AZ dan pengalihan otomatis saat gagal diaktifkan, ElastiCache secara otomatis menjadikan replika baca sebagai Node utama saat Node utama gagal — biasanya proses pengalihan selesai dalam waktu kurang dari 60 detik. Hal ini memberikan ketersediaan tinggi bagi aplikasi berbasis Redis, yang tidak dapat ditandingi oleh Memcached (Memcached tidak memiliki replikasi). Untuk aplikasi Production yang memerlukan caching dengan HA, selalu gunakan Redis dengan pengalihan otomatis saat gagal.

# Create a Redis replication group with Multi-AZ failover
aws elasticache create-replication-group \
  --replication-group-id prod-redis \
  --description 'Production Redis with HA' \
  --cache-node-type cache.r7g.xlarge \
  --engine redis \
  --multi-az-enabled \
  --automatic-failover-enabled \
  --num-cache-clusters 3 \
  --cache-subnet-group-name multi-az-subnet-group

# 1 primary + 2 replicas across 3 AZs

Set Terurut Redis untuk Leaderboard

Set terurut adalah salah satu struktur data Redis yang paling kuat. Setiap anggota memiliki skor pecahan terkait, dan anggota selalu dipertahankan dalam urutan terurut. Hal ini menjadikan set terurut ideal untuk Leaderboard (diurutkan berdasarkan skor), antrean prioritas (memproses pekerjaan dengan prioritas tertinggi terlebih dahulu), dan pembatasan laju (jendela geser dengan stempel waktu sebagai skor). Operasi ZADD, ZRANGE, ZREVRANGE, ZRANK, dan ZRANGEBYSCORE semuanya memiliki kompleksitas O(log n) — sangat efisien bahkan untuk jutaan entri.

# Leaderboard operations using Redis sorted sets

# Add/update scores
# ZADD game:leaderboard 10500 'player:alice'
# ZADD game:leaderboard 9800  'player:bob'
# ZADD game:leaderboard 11200 'player:carol'

# Get top 3 players (highest scores first)
# ZREVRANGE game:leaderboard 0 2 WITHSCORES
# Result: carol 11200, alice 10500, bob 9800

# Get a player's rank (0-indexed)
# ZREVRANK game:leaderboard 'player:alice'
# Result: 1 (second place)

Pub/Sub Redis untuk Pesan

pub/sub Redis memungkinkan penerbit menyiarkan pesan ke saluran tanpa mengetahui siapa yang berlangganan. Pelanggan menerima semua pesan yang diterbitkan ke saluran yang mereka ikuti, secara waktu nyata. Pesan pub/sub tidak dipersistenkan — jika pelanggan sedang luring, pesan tersebut akan terlewat. Untuk pesan persisten dengan pengiriman terjamin, gunakan Redis Streams (struktur data yang lebih tangguh dan ditambahkan pada Redis 5) atau layanan pesan khusus seperti SQS atau SNS. Dalam ujian SAA-C03, pub/sub Redis merupakan pilihan untuk notifikasi waktu nyata yang ringan antar-layanan.

# Publisher side (broadcasts to 'notifications' channel)
# PUBLISH notifications '{"type":"order_shipped","orderId":"12345"}'

# Subscriber side (listens for messages)
# SUBSCRIBE notifications

# Pattern subscribe (wildcard channel matching)
# PSUBSCRIBE order:*
# Receives messages from: order:created, order:shipped, order:delivered

# Note: Unlike SQS, pub/sub is fire-and-forget — no acknowledgement

Memcached vs Redis: Tabel Keputusan

Gunakan kerangka berikut untuk memilih dalam ujian SAA-C03: Pilih Memcached saat Anda memerlukan: cache sederhana tanpa persyaratan HA, performa multi-threaded, dan penskalaan horizontal dengan menambahkan Node (cache murni). Pilih Redis saat Anda memerlukan: persistensi (penyimpanan sesi), replikasi dan pengalihan saat gagal (HA), tipe data kompleks (set terurut untuk Leaderboard, set, daftar), pub/sub, transaksi Lua, serta Cluster Mode untuk penskalaan horizontal multi-shard. Jika pertanyaan ujian menyebutkan fitur apa pun di luar caching key-value sederhana, Redis hampir selalu menjadi jawabannya.

Jenis dan Keluarga Node Cache

ElastiCache menyediakan beberapa keluarga jenis Node: r7g (Graviton 3, dioptimalkan untuk memori — rasio harga/performa terbaik, direkomendasikan untuk sebagian besar caching), m7g (komputasi dan memori seimbang), dan t4g (dapat melonjak, berbiaya rendah untuk pengembangan/pengujian). Ukuran Node berkisar dari cache.t4g.micro (500 MB) hingga cache.r7g.16xlarge (425 GB). Untuk Production, pilih ukuran Node yang dapat menyimpan dataset di memori dengan ruang cadangan 20–25%. Kehabisan memori menyebabkan evictions (Memcached) atau error OOM (Redis).

# Get available cache node types
aws elasticache describe-cache-engine-versions \
  --engine redis \
  --query 'CacheEngineVersions[?contains(EngineVersion, '7')].{Engine:Engine,Version:EngineVersion}'

# Check memory and vCPU for a node type
aws elasticache describe-cache-engine-versions \
  --cache-parameter-group-family redis7

# Monitor evictions to detect memory pressure
# CloudWatch: Evictions metric > 0 means cache is full

Keamanan ElastiCache

ElastiCache diterapkan di dalam VPC Anda dengan security group yang mengendalikan akses — secara default tidak ada akses internet publik. Untuk Redis, aktifkan token AUTH (kata sandi yang harus diberikan klien) dan enkripsi saat transit (TLS) untuk koneksi, serta enkripsi saat tersimpan menggunakan KMS. Untuk Memcached, hanya TLS saat transit yang tersedia (tanpa enkripsi saat tersimpan atau AUTH). Saat bermigrasi dari Redis tidak terenkripsi ke Redis terenkripsi, tidak ada migrasi di tempat — Anda harus membuat cluster terenkripsi baru dan mengisinya terlebih dahulu.

# Create a Redis cluster with TLS and AUTH token
aws elasticache create-replication-group \
  --replication-group-id secure-redis \
  --description 'Encrypted Redis' \
  --cache-node-type cache.r7g.large \
  --engine redis \
  --transit-encryption-enabled \
  --at-rest-encryption-enabled \
  --auth-token 'MySecretPassword123!'

# Store the AUTH token in Secrets Manager, not in your app code

Kebijakan Eviction

Saat cache Redis atau Memcached penuh, kebijakan eviction menentukan key mana yang dihapus untuk menyediakan ruang. Kebijakan eviction Redis yang umum: noeviction (mengembalikan error OOM — baik jika cache adalah penyimpanan utama), allkeys-lru (menghapus key yang paling lama tidak digunakan di antara semua key — baik untuk cache umum), volatile-lru (LRU di antara key yang memiliki TTL — mempertahankan key yang tidak kedaluwarsa), allkeys-random (eviction acak), allkeys-lfu (yang paling jarang digunakan). Untuk kasus penggunaan caching umum, allkeys-lru atau allkeys-lfu direkomendasikan.

# Set eviction policy via parameter group
aws elasticache create-cache-parameter-group \
  --cache-parameter-group-name redis7-lru \
  --cache-parameter-group-family redis7 \
  --description 'LRU eviction policy'

aws elasticache modify-cache-parameter-group \
  --cache-parameter-group-name redis7-lru \
  --parameter-name-values ParameterName=maxmemory-policy,ParameterValue=allkeys-lru

# Apply the parameter group to your cluster:
aws elasticache modify-replication-group \
  --replication-group-id prod-redis \
  --cache-parameter-group-name redis7-lru

Pemeriksaan Cepat

Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari: Memcached sederhana, multi-threaded, dan tidak memiliki HA — paling cocok untuk penskalaan horizontal murni pada cache sederhana, Redis mendukung struktur data kompleks, persistensi, pub/sub, dan pengalihan saat gagal Multi-AZ — paling cocok untuk sebagian besar skenario caching Production, dan set terurut menjadikan Redis pilihan alami untuk Leaderboard dan antrean prioritas. Selanjutnya kita akan membahas Kelompok Replikasi Redis dan Mode Cluster untuk sharding horizontal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Redis vs Memcached: Memilih Mesin yang Tepat” gratis?

Ya — teks lengkap “Redis vs Memcached: Memilih Mesin yang Tepat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Redis vs Memcached: Memilih Mesin yang Tepat”?

Bandingkan Redis (persistensi, replikasi, set terurut, pub/sub) dengan Memcached (kesederhanaan, multithreading), lalu pilih berdasarkan kebutuhan kasus penggunaan. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?

Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Redis vs Memcached: Memilih Mesin yang Tepat” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?

Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Redis vs Memcached: Memilih Mesin yang Tepat
  2. Grup Replikasi Redis ElastiCache dan Mode Klaster
  3. Strategi Caching: Pemuatan Malas dan Tulis Langsung
  4. Penyimpanan Sesi dan Pola Papan Peringkat
← Kembali ke AWS Solutions Architect