Redis ve Memcached: Doğru Motoru Seçme
Redis'i (kalıcılık, çoğaltma, sıralı kümeler, yayınlama/abone olma) Memcached (yalınlık, çoklu iş parçacığı) ile karşılaştırın ve kullanım durumu gereksinimlerine göre seçim yapın.
Redis ve Memcached: Doğru Motoru Seçme, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
Amazon ElastiCache Nedir
Amazon ElastiCache, popüler açık kaynaklı bellek içi veri depolarını bulutta dağıtmayı, yönetmeyi ve ölçeklendirmeyi kolaylaştıran, tamamen yönetilen bir bellek içi önbellekleme hizmetidir. İki Engine destekler: Redis ve Memcached. ElastiCache, sık istenen verileri bir veritabanından almak yerine bellekten sunarak veritabanı yükünü kat kat azaltabilir ve yanıt gecikmesini milisaniyelerden mikrosaniyelere indirebilir. Redis ile Memcached arasında seçim yapmak, yaygın bir SAA-C03 sınav sorusudur.
Memcached: Saf Sadelik
Memcached, sadeliğe ve yatay ölçeklenebilirliğe odaklanan dağıtık, bellek içi bir anahtar-değer deposudur. Temel özellikleri şunlardır: çok iş parçacıklı (tek bir düğümdeki tüm CPU çekirdeklerini kullanabilir), basit anahtar-değer depolama (yalnızca dizeler, karmaşık veri yapıları yoktur), kalıcılık yoktur (bir düğüm yeniden başlatıldığında veriler kaybolur), çoğaltma yoktur (yedek veya replika yoktur) ve istemci tarafında tutarlı karma kullanılarak yatay parçalama yapılır. Basit, büyük ölçekli bir önbelleğe ihtiyacınız varsa ve kalıcılık, karmaşık veri türleri veya yüksek kullanılabilirlik gerekmiyorsa Memcached doğru seçimdir.
# 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:11211Redis: Zengin Özellikli Bellek İçi Depo
Redis (Remote Dictionary Server), dize, karma, liste, küme, sıralı küme, bitmap, HyperLogLogs, akış ve coğrafi dizinleri destekleyen, tek iş parçacıklı (örnek başına), zengin özelliklere sahip bir bellek içi veri yapısı deposudur. Memcached'e göre temel avantajları şunlardır: isteğe bağlı kalıcılık (AOF ve RDB anlık görüntüleri), çoğaltma (okuma replikaları ve otomatik yük devretme), pub/sub mesajlaşması, Lua betik oluşturma, işlemler (MULTI/EXEC) ve yatay parçalama için Cluster Mode. Redis, gerçek dünyadaki önbellekleme senaryolarının çoğu için doğru seçimdir.
# 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 notificationsRedis Kalıcılığı: AOF ve RDB
Redis iki kalıcılık mekanizmasını destekler: RDB (Redis Database) — yapılandırılabilir aralıklarla diske kaydedilen, belirli bir zamandaki durumun periyodik anlık görüntüleridir (yeniden başlatma hızlıdır ancak anlık görüntüler arasındaki veriler kaybedilebilir). AOF (Append-Only File) — her yazma işlemini kaydeder; Redis yeniden başlatıldığında durumu yeniden oluşturmak için günlüğü tekrar oynatır (daha büyük dosyalar ve daha yavaş yeniden başlatma karşılığında dayanıklılık sağlar). ElastiCache'te düğüm yeniden başlatmaları arasında verileri korumak için AOF'yi etkinleştirebilirsiniz. ElastiCache yalnızca önbellek olarak değil, birincil veri deposu olarak da kullanıldığında (örneğin oturum verileri için) bu özellik kritik önem taşır.
# 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=yesRedis Çoğaltma ve Otomatik Yük Devretme
Redis, tüm yazmaları işleyen bir birincil düğüm ve okumaları işleyen en fazla 5 okuma replikası içeren çoğaltma gruplarını destekler. Multi-AZ ve otomatik yük devretme etkinleştirildiğinde ElastiCache, birincil düğüm başarısız olduğunda bir okuma replikasını otomatik olarak birincil düğüme yükseltir; yük devretme genellikle 60 saniyeden kısa sürede tamamlanır. Bu, Redis destekli uygulamalara Memcached'in sunamayacağı yüksek kullanılabilirliği sağlar (Memcached'de çoğaltma yoktur). HA önbelleklemesi gerektiren Production uygulamalarında her zaman otomatik yük devretme özellikli Redis kullanın.
# 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 AZsLeaderboard'lar için Redis Sıralı Kümeleri
Sıralı kümeler, Redis'in en güçlü veri yapılarından biridir. Her üyenin ilişkili bir kayan noktalı puanı vardır ve üyeler her zaman sıralı tutulur. Bu nedenle sıralı kümeler Leaderboard'lar (puana göre sıralama), öncelik kuyrukları (en yüksek öncelikli işleri önce işleme) ve hız sınırlama (puan olarak zaman damgaları kullanılan kayan pencere) için idealdir. ZADD, ZRANGE, ZREVRANGE, ZRANK ve ZRANGEBYSCORE işlemlerinin tümü O(log n) karmaşıklığındadır; milyonlarca giriş için bile son derece verimlidir.
# 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)Mesajlaşma için Redis Pub/Sub
Redis pub/sub, yayıncıların kimin abone olduğunu bilmeden kanallara mesaj yayınlamasına olanak tanır. Aboneler, abone oldukları kanallarda yayınlanan tüm mesajları gerçek zamanlı olarak alır. Pub/sub mesajları kalıcı değildir — bir abone çevrim dışıysa mesajı kaçırır. Garantili teslimatla kalıcı mesajlaşma için Redis Streams (Redis 5'te eklenen daha sağlam bir veri yapısı) veya SQS ya da SNS gibi amaca yönelik bir mesajlaşma hizmeti kullanın. SAA-C03 sınavında Redis pub/sub, hizmetler arasındaki hafif gerçek zamanlı bildirimler için bir seçenektir.
# 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 acknowledgementMemcached ve Redis: Karar Tablosu
SAA-C03 sınavında seçim yapmak için bu çerçeveyi kullanın: Şunlara ihtiyacınız varsa Memcached'i seçin: HA gereksinimi olmayan basit önbellek, çok iş parçacıklı performans, düğüm ekleyerek yatay ölçekleme (salt önbellek). Şunlara ihtiyacınız varsa Redis'i seçin: kalıcılık (oturum deposu), çoğaltma ve yük devretme (HA), karmaşık veri türleri (Leaderboard'lar için sıralı kümeler, kümeler, listeler), pub/sub, Lua işlemleri ve çok parçalı yatay ölçekleme için Cluster Mode. Sınav sorusunda basit anahtar-değer önbelleklemenin ötesinde herhangi bir özellikten söz ediliyorsa yanıt neredeyse her zaman Redis'tir.
Önbellek Düğümü Türleri ve Aileleri
ElastiCache çeşitli düğüm türü aileleri sunar: r7g (Graviton 3, bellek için optimize edilmiştir — en iyi fiyat/performans oranı, çoğu önbellekleme senaryosu için önerilir), m7g (dengeli işlem ve bellek) ve t4g (geliştirme/test için düşük maliyetli, patlamalı performans). Düğüm boyutları cache.t4g.micro (500 MB) ile cache.r7g.16xlarge (425 GB) arasında değişir. Production ortamında veri kümenizi %20-25 yedek kapasiteyle bellekte tutabilecek bir düğüm boyutu seçin. Belleğin tükenmesi Memcached'de tahliyelere, Redis'te ise OOM hatalarına neden olur.
# 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 fullElastiCache Güvenliği
ElastiCache, erişimi denetleyen güvenlik gruplarıyla VPC'nizin içinde dağıtılır; varsayılan olarak genel internet erişimi yoktur. Redis için AUTH belirteçlerini (istemcilerin sağlaması gereken bir parola) ve bağlantılar için aktarılırken şifrelemeyi (TLS) etkinleştirin; ayrıca KMS kullanarak beklemedeki verileri şifrelemeyi açın. Memcached için yalnızca aktarılırken TLS kullanılabilir (beklemedeki verileri şifreleme veya AUTH yoktur). Şifrelenmemiş Redis'ten şifrelenmiş Redis'e geçişte yerinde geçiş yapılamaz; yeni bir şifrelenmiş küme oluşturmanız ve onu verilerle ısıtmanız gerekir.
# 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 codeTahliye Politikaları
Bir Redis veya Memcached önbelleği dolduğunda tahliye politikası, yer açmak için hangi anahtarların kaldırılacağını belirler. Yaygın Redis tahliye politikaları şunlardır: noeviction (OOM hatası döndürür — önbellek birincil depoysa uygundur), allkeys-lru (tüm anahtarlar arasından en uzun süredir kullanılmayanı tahliye eder — genel amaçlı önbellekler için uygundur), volatile-lru (TTL ayarlanmış anahtarlar arasındaki LRU — süresi dolmayan anahtarları korur), allkeys-random (rastgele tahliye), allkeys-lfu (en az kullanılanı tahliye eder). Tipik önbellekleme kullanım senaryolarında allkeys-lru veya allkeys-lfu önerilir.
# 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-lruHızlı Kontrol
Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: Memcached basit ve çok iş parçacıklıdır, ancak HA özelliği yoktur — basit önbelleklerin salt yatay ölçeklenmesi için en uygunudur; Redis karmaşık veri yapılarını, kalıcılığı, pub/sub'ı ve Multi-AZ yük devretmesini destekler — Production önbellekleme senaryolarının çoğu için en uygunudur; ayrıca sıralı kümeler, Redis'i Leaderboard'lar ve öncelik kuyrukları için doğal seçim haline getirir. Sırada yatay parçalama için Redis çoğaltma gruplarını ve Cluster Mode'u inceleyeceğiz.
Sıkça Sorulan Sorular
“Redis ve Memcached: Doğru Motoru Seçme” dersi ücretsiz mi?
Evet — “Redis ve Memcached: Doğru Motoru Seçme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
“Redis ve Memcached: Doğru Motoru Seçme” dersinde ne öğreneceğim?
Redis'i (kalıcılık, çoğaltma, sıralı kümeler, yayınlama/abone olma) Memcached (yalınlık, çoklu iş parçacığı) ile karşılaştırın ve kullanım durumu gereksinimlerine göre seçim yapın. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Redis ve Memcached: Doğru Motoru Seçme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Redis ve Memcached: Doğru Motoru Seçme
- ElastiCache Redis Çoğaltma Grupları ve Küme Kipi
- Önbellekleme Stratejileri: Tembel Yükleme ve Yazma Üzerinden Geçirme
- Oturum Depolama ve Liderlik Tablosu Örüntüleri