AWS Solutions Architect · Pelajaran

Redis berbanding Memcached: Memilih Enjin yang Sesuai

Bandingkan Redis (ketekalan, replikasi, set tersusun, terbitan/langganan) dengan Memcached (kesederhanaan, pelbagai bebenang), kemudian pilih berdasarkan keperluan kes penggunaan.

Pelajaran 1 daripada 413 langkah

Redis berbanding Memcached: Memilih Enjin yang Sesuai ialah pelajaran AWS Solutions Architect percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AWS Solutions Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.

Apakah Amazon ElastiCache?

Amazon ElastiCache ialah perkhidmatan penyimpanan cache dalam memori yang diurus sepenuhnya, yang memudahkan anda menerapkan, mengurus dan menskalakan stor data dalam memori sumber terbuka yang popular dalam awan. Perkhidmatan ini menyokong dua enjin: Redis dan Memcached. Dengan menyediakan data yang kerap diminta daripada memori dan bukannya pangkalan data, ElastiCache boleh mengurangkan beban pangkalan data berkali-kali ganda serta mengurangkan kependaman respons daripada milisaat kepada mikrosaat. Pemilihan antara Redis dan Memcached ialah soalan peperiksaan SAA-C03 yang lazim.

Memcached: Kesederhanaan Tulen

Memcached ialah stor nilai-kunci teragih dalam memori yang memfokuskan kesederhanaan dan kebolehskalaan mendatar. Ciri-ciri utamanya: berbilang bebenang (boleh menggunakan semua teras CPU pada satu nod), penyimpanan nilai-kunci yang ringkas (rentetan sahaja, tanpa struktur data kompleks), tiada kegigihan (data hilang apabila nod dimulakan semula), tiada replikasi (tiada nod siap sedia atau replika), dan pembahagian mendatar melalui pencincangan konsisten pada pihak klien. Memcached ialah pilihan yang tepat apabila anda memerlukan cache berskala besar yang ringkas dan tidak memerlukan kegigihan, jenis 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: Stor Dalam Memori Kaya Ciri

Redis (Remote Dictionary Server) ialah stor struktur data dalam memori yang kaya dengan ciri dan menggunakan satu bebenang (bagi setiap tika), yang menyokong rentetan, cincangan, senarai, set, set tersusun, peta bit, HyperLogLogs, strim dan indeks geospatial. Kelebihan utama berbanding Memcached: kegigihan pilihan (AOF dan syot kilat RDB), replikasi (replika bacaan dan peralihan automatik), pemesejan pub/sub, penskripan Lua, transaksi (MULTI/EXEC) dan mod kelompok untuk pembahagian mendatar. Redis ialah pilihan yang tepat bagi kebanyakan senario penyimpanan cache dunia sebenar.

# 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

Kegigihan Redis: AOF dan RDB

Redis menyokong dua mekanisme kegigihan: RDB (Redis Database) — syot kilat berkala pada sesuatu masa yang disimpan ke cakera pada selang yang boleh dikonfigurasikan (pemulaan semula yang pantas, tetapi data antara syot kilat mungkin hilang). AOF (Append-Only File) — merekod setiap operasi tulis; apabila dimulakan semula, Redis memainkan semula log tersebut untuk membina semula keadaan (ketahanan data dengan kos saiz fail yang lebih besar dan pemulaan semula yang lebih perlahan). Dalam ElastiCache, anda boleh mendayakan AOF untuk mengekalkan data merentasi pemulaan semula nod. Ini penting apabila ElastiCache digunakan bukan sekadar sebagai cache, tetapi juga sebagai stor data utama (contohnya 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 Peralihan Automatik

Redis menyokong kumpulan replikasi dengan satu nod utama yang mengendalikan semua penulisan dan sehingga 5 replika bacaan yang mengendalikan bacaan. Dengan Multi-AZ dan peralihan automatik didayakan, ElastiCache secara automatik menaik taraf replika bacaan menjadi nod utama apabila nod utama gagal — biasanya melengkapkan peralihan dalam masa kurang daripada 60 saat. Ini memberikan ketersediaan tinggi kepada aplikasi berasaskan Redis, sesuatu yang tidak dapat ditandingi oleh Memcached (Memcached tidak mempunyai replikasi). Untuk aplikasi Production yang memerlukan cache HA, sentiasa gunakan Redis dengan peralihan automatik.

# 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 Tersusun Redis untuk Leaderboard

Set tersusun ialah salah satu struktur data Redis yang paling berkuasa. Setiap ahli mempunyai skor titik apungan yang berkaitan, dan ahli sentiasa disimpan dalam susunan tersusun. Hal ini menjadikan set tersusun sesuai untuk Leaderboard (kedudukan berdasarkan skor), baris gilir keutamaan (memproses tugas berkeutamaan tertinggi dahulu) dan pengehadan kadar (tetingkap gelongsor dengan cap masa sebagai skor). Operasi ZADD, ZRANGE, ZREVRANGE, ZRANK dan ZRANGEBYSCORE semuanya ialah O(log n) — amat cekap walaupun untuk berjuta-juta 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 Pemesejan

pub/sub Redis membolehkan penerbit menyiarkan mesej ke saluran tanpa mengetahui siapa yang melanggan. Pelanggan menerima semua mesej yang diterbitkan ke saluran yang dilanggannya dalam masa nyata. Mesej Pub/sub tidak dikekalkan — jika pelanggan berada di luar talian, mesej tersebut akan terlepas. Untuk pemesejan berterusan dengan penghantaran terjamin, gunakan Redis Streams (struktur data yang lebih kukuh yang ditambahkan dalam Redis 5) atau perkhidmatan pemesejan khusus seperti SQS atau SNS. Untuk peperiksaan SAA-C03, pub/sub Redis ialah pilihan bagi pemberitahuan masa nyata yang ringan antara perkhidmatan.

# 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 berbanding Redis: Jadual Keputusan

Gunakan rangka kerja ini untuk membuat pilihan bagi peperiksaan SAA-C03: Pilih Memcached apabila anda memerlukan: cache ringkas tanpa keperluan HA, prestasi berbilang bebenang dan penskalaan mendatar dengan menambah nod (cache tulen). Pilih Redis apabila anda memerlukan: kegigihan (stor sesi), replikasi dan peralihan (HA), jenis data kompleks (set tersusun untuk Leaderboard, set dan senarai), pub/sub, transaksi Lua atau Mod Kelompok untuk penskalaan mendatar berbilang serpihan. Jika soalan peperiksaan menyebut sebarang ciri selain penyimpanan cache nilai-kunci yang ringkas, Redis hampir sentiasa merupakan jawapannya.

Jenis dan Keluarga Nod Cache

ElastiCache menawarkan beberapa keluarga jenis nod: r7g (Graviton 3, dioptimumkan memori — harga/prestasi terbaik, disyorkan untuk kebanyakan penyimpanan cache), m7g (pengiraan dan memori seimbang) dan t4g (boleh meletus, kos rendah untuk pembangunan/pengujian). Saiz nod adalah antara cache.t4g.micro (500 MB) hingga cache.r7g.16xlarge (425 GB). Untuk Production, pilih saiz nod yang mengekalkan set data anda dalam memori dengan lebihan kapasiti sebanyak 20–25%. Kehabisan memori menyebabkan pengusiran (Memcached) atau ralat 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

Keselamatan ElastiCache

ElastiCache diterapkan dalam VPC anda dengan kumpulan keselamatan yang mengawal akses — tiada akses internet awam secara lalai. Untuk Redis, dayakan token AUTH (kata laluan yang mesti diberikan oleh klien) dan penyulitan semasa penghantaran (TLS) bagi sambungan, serta penyulitan semasa disimpan menggunakan KMS. Untuk Memcached, hanya TLS semasa penghantaran tersedia (tiada penyulitan semasa disimpan atau AUTH). Apabila berhijrah daripada Redis yang tidak disulitkan kepada Redis yang disulitkan, penghijrahan di tempat tidak tersedia — anda mesti mencipta kelompok disulitkan yang baharu dan memanaskannya.

# 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

Dasar Pengusiran

Apabila cache Redis atau Memcached penuh, dasar pengusiran menentukan kunci yang akan dibuang untuk menyediakan ruang. Dasar pengusiran Redis yang lazim: noeviction (mengembalikan ralat OOM — sesuai apabila cache ialah stor utama), allkeys-lru (mengusir kunci yang paling lama tidak digunakan merentas semua kunci — sesuai sebagai cache umum), volatile-lru (LRU antara kunci yang mempunyai TTL — mengekalkan kunci yang tidak luput), allkeys-random (pengusiran rawak) dan allkeys-lfu (paling kurang kerap digunakan). Untuk kes penggunaan cache biasa, allkeys-lru atau allkeys-lfu disyorkan.

# 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

Semakan Pantas

Uji pemahaman anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini, anda telah mempelajari bahawa: Memcached adalah ringkas, berbilang bebenang dan tiada HA — terbaik untuk penskalaan mendatar cache ringkas semata-mata, Redis menyokong struktur data kompleks, kegigihan, pub/sub dan peralihan Multi-AZ — terbaik untuk kebanyakan senario penyimpanan cache Production, dan set tersusun menjadikan Redis pilihan semula jadi untuk Leaderboard serta baris gilir keutamaan. Seterusnya, kita akan meneroka Kumpulan Replikasi Redis dan Mod Kelompok untuk pembahagian mendatar.

Percuma untuk bermula

Pelajari AWS Solutions Architect dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Redis berbanding Memcached: Memilih Enjin yang Sesuai” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran AWS Solutions Architect, termasuk “Redis berbanding Memcached: Memilih Enjin yang Sesuai”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Redis berbanding Memcached: Memilih Enjin yang Sesuai”?

Bandingkan Redis (ketekalan, replikasi, set tersusun, terbitan/langganan) dengan Memcached (kesederhanaan, pelbagai bebenang), kemudian pilih berdasarkan keperluan kes penggunaan. Anda berlatih AWS Solutions Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan AWS Solutions Architect?

Tiada pengalaman terdahulu diperlukan. Pembelajaran AWS Solutions Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Redis berbanding Memcached: Memilih Enjin yang Sesuai” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran AWS Solutions Architect ini?

Ya. Setiap pelajaran AWS Solutions Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Redis berbanding Memcached: Memilih Enjin yang Sesuai
  2. Kumpulan Replikasi Redis ElastiCache dan Mod Kluster
  3. Strategi Caching: Pemuatan Malas dan Tulis Terus
  4. Storan Sesi dan Corak Papan Pendahulu
← Kembali ke AWS Solutions Architect