0Pricing
Cloud & IT Cert Prep · Leçon

Redis ou Memcached : choisir le moteur adapté

Comparez Redis (persistance, réplication, ensembles triés, publication/abonnement) à Memcached (simplicité, multithreading), puis choisissez selon les exigences du cas d’utilisation.

Redis ou Memcached : choisir le moteur adapté est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu’est-ce qu’Amazon ElastiCache ?

Amazon ElastiCache est un service de mise en cache en mémoire entièrement géré qui facilite le déploiement, la gestion et la mise à l’échelle de magasins de données en mémoire open source courants dans le cloud. Il prend en charge deux moteurs : Redis et Memcached. En servant les données fréquemment demandées depuis la mémoire plutôt que depuis une base de données, ElastiCache peut réduire considérablement la charge de la base de données et faire passer la latence des réponses de quelques millisecondes à quelques microsecondes. Le choix entre Redis et Memcached est une question fréquente de l’examen SAA-C03.

Memcached : la simplicité à l’état pur

Memcached est un magasin distribué clé-valeur en mémoire, axé sur la simplicité et la mise à l’échelle horizontale. Ses principales caractéristiques sont les suivantes : multithread (il peut utiliser tous les cœurs CPU d’un même nœud), stockage clé-valeur simple (chaînes de caractères uniquement, sans structures de données complexes), aucune persistance (les données sont perdues lorsqu’un nœud redémarre), aucune réplication (pas de nœud de secours ni de réplicas) et partitionnement horizontal au moyen d’un hachage cohérent côté client. Memcached est le bon choix lorsque vous avez besoin d’un cache simple et de grande taille, sans persistance, types de données complexes ni haute disponibilité.

# 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 : un magasin en mémoire riche en fonctionnalités

Redis (Remote Dictionary Server) est un magasin de structures de données en mémoire, riche en fonctionnalités et monothread (par instance), qui prend en charge les chaînes de caractères, les hachages, les listes, les ensembles, les ensembles triés, les bitmaps, les HyperLogLogs, les flux et les index géospatiaux. Ses principaux avantages par rapport à Memcached sont les suivants : persistance facultative (instantanés AOF et RDB), réplication (réplicas en lecture et basculement automatique), messagerie pub/sub, scripts Lua, transactions (MULTI/EXEC) et mode Cluster pour le partitionnement horizontal. Redis est le bon choix pour la plupart des scénarios réels de mise en cache.

# 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

Persistance Redis : AOF et RDB

Redis prend en charge deux mécanismes de persistance : RDB (Redis Database) — des instantanés périodiques à un instant donné, enregistrés sur disque selon des intervalles configurables (redémarrages rapides, mais risque de perdre les données modifiées entre deux instantanés). AOF (Append-Only File) — enregistre chaque opération d’écriture ; lors d’un redémarrage, Redis rejoue le journal pour reconstruire l’état (meilleure durabilité, au prix de fichiers plus volumineux et de redémarrages plus lents). Dans ElastiCache, vous pouvez activer AOF afin de conserver les données lors des redémarrages de nœuds. Cette fonctionnalité est essentielle lorsqu’ElastiCache est utilisé non seulement comme cache, mais aussi comme magasin de données principal, par exemple pour les données de session.

# 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

Réplication Redis et basculement automatique

Redis prend en charge les groupes de réplication avec un nœud primaire qui gère toutes les écritures et jusqu’à 5 réplicas en lecture qui gèrent les lectures. Lorsque Multi-AZ et le basculement automatique sont activés, ElastiCache promeut automatiquement un réplica en lecture au rang de primaire lorsque le primaire tombe en panne — le basculement s’effectue généralement en moins de 60 secondes. Cela confère aux applications reposant sur Redis une haute disponibilité que Memcached ne peut pas égaler (Memcached ne prend pas en charge la réplication). Pour les applications Production nécessitant une mise en cache HA, utilisez toujours Redis avec le basculement automatique.

# 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

Ensembles triés Redis pour les classements

Les ensembles triés comptent parmi les structures de données les plus puissantes de Redis. Chaque membre possède un score à virgule flottante associé, et les membres sont toujours conservés dans l’ordre trié. Les ensembles triés sont donc idéaux pour les classements (classement par score), les files d’attente prioritaires (traitement en premier des tâches les plus prioritaires) et la limitation du débit (fenêtre glissante utilisant des horodatages comme scores). Les opérations ZADD, ZRANGE, ZREVRANGE, ZRANK et ZRANGEBYSCORE sont toutes en O(log n), ce qui est extrêmement efficace, même pour des millions d’entrées.

# 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 pour la messagerie

Le pub/sub Redis permet aux éditeurs de diffuser des messages sur des canaux sans savoir qui y est abonné. Les abonnés reçoivent en temps réel tous les messages publiés sur les canaux auxquels ils sont abonnés. Les messages pub/sub ne sont pas persistants : si un abonné est hors ligne, il ne reçoit pas le message. Pour une messagerie persistante avec une livraison garantie, utilisez Redis Streams (une structure de données plus robuste ajoutée dans Redis 5) ou un service de messagerie spécialisé tel que SQS ou SNS. Pour l’examen SAA-C03, le pub/sub Redis est une option adaptée aux notifications légères en temps réel entre services.

# 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 ou Redis : tableau de décision

Utilisez ce cadre pour choisir la solution appropriée à l’examen SAA-C03 : choisissez Memcached lorsque vous avez besoin d’un cache simple sans exigence de HA, de performances multithread et d’une mise à l’échelle horizontale par ajout de nœuds (cache pur). Choisissez Redis lorsque vous avez besoin de persistance (magasin de sessions), de réplication et de basculement (HA), de types de données complexes (ensembles triés pour les classements, ensembles, listes), du pub/sub, de transactions Lua ou du Cluster Mode pour une mise à l’échelle horizontale sur plusieurs partitions. Si la question d’examen mentionne une fonctionnalité allant au-delà de la simple mise en cache clé-valeur, Redis est presque toujours la réponse.

Types et familles de nœuds de cache

ElastiCache propose plusieurs familles de types de nœuds : r7g (Graviton 3, optimisé pour la mémoire — meilleur rapport prix/performances, recommandé pour la plupart des caches), m7g (calcul et mémoire équilibrés) et t4g (à capacité extensible, peu coûteux pour le développement et les tests). Les tailles de nœuds vont de cache.t4g.micro (500 MB) à cache.r7g.16xlarge (425 GB). Pour la Production, choisissez une taille de nœud qui conserve votre jeu de données en mémoire avec une marge de 20 à 25 %. Un manque de mémoire provoque des évictions (Memcached) ou des erreurs 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

Sécurité d’ElastiCache

ElastiCache est déployé dans votre VPC, avec des groupes de sécurité qui contrôlent les accès — aucun accès à Internet public n’est autorisé par défaut. Pour Redis, activez les jetons AUTH (un mot de passe que les clients doivent fournir) et le chiffrement en transit (TLS) des connexions, ainsi que le chiffrement au repos à l’aide de KMS. Pour Memcached, seul le chiffrement TLS en transit est disponible (pas de chiffrement au repos ni d’AUTH). Lors d’une migration de Redis non chiffré vers Redis chiffré, aucune migration sur place n’est possible : vous devez créer un nouveau cluster chiffré et le préchauffer.

# 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

Stratégies d’éviction

Lorsqu’un cache Redis ou Memcached est plein, la stratégie d’éviction détermine quelles clés sont supprimées pour libérer de l’espace. Stratégies d’éviction Redis courantes : noeviction (renvoie une erreur OOM — utile lorsque le cache est le magasin principal), allkeys-lru (éviction des clés les moins récemment utilisées parmi toutes les clés — adapté à un cache général), volatile-lru (LRU parmi les clés auxquelles un TTL est défini — préserve les clés qui n’expirent pas), allkeys-random (éviction aléatoire) et allkeys-lfu (éviction des clés les moins fréquemment utilisées). Pour les cas d’utilisation courants de mise en cache, allkeys-lru ou allkeys-lfu sont recommandés.

# 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

Vérification rapide

Évaluez votre compréhension des concepts AWS Solutions Architect (SAA-C03) abordés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que Memcached est simple, multithread et ne fournit pas de HA — il convient particulièrement à la mise à l’échelle horizontale de caches simples, que Redis prend en charge les structures de données complexes, la persistance, le pub/sub et le basculement Multi-AZ — il convient donc à la plupart des scénarios de mise en cache en Production, et que les ensembles triés font de Redis le choix naturel pour les classements et les files d’attente prioritaires. Nous allons maintenant explorer les groupes de réplication Redis et le Cluster Mode pour le partitionnement horizontal.

Questions Fréquemment Posées

La leçon « Redis ou Memcached : choisir le moteur adapté » est-elle gratuite ?

Oui — le texte complet de « Redis ou Memcached : choisir le moteur adapté » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Redis ou Memcached : choisir le moteur adapté » ?

Comparez Redis (persistance, réplication, ensembles triés, publication/abonnement) à Memcached (simplicité, multithreading), puis choisissez selon les exigences du cas d’utilisation. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?

Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Redis ou Memcached : choisir le moteur adapté » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?

Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Redis ou Memcached : choisir le moteur adapté
  2. Groupes de réplication Redis ElastiCache et mode cluster
  3. Stratégies de mise en cache : chargement différé et écriture directe
  4. Stockage des sessions et modèles de classements
← Retour à Cloud & IT Cert Prep