Introduction
Le cache réduit les lectures mais peut conserver un ancien prix lorsque la source change. Observez cette période, laissez expirer la copie, puis utilisez l’invalidation explicite pour rendre une mise à jour immédiatement visible.
Terminez Add a Cache to a Product Lookup. Cette nouvelle VM fournit sa propre application, son catalogue DynamoDB et son nœud connecté. Utilisez Terminal pour AWS CLI et l’application, et AWS View pour comparer source et réponses. Aucune ressource précédente n’est réutilisée.
Lien avec la certification
| Certification | Tâche de l’examen | Pratique |
|---|---|---|
| Cloud Practitioner (CLF-C02) | Task 3.4 | Distinguer le cache en mémoire des données faisant autorité et observer le comportement de l’application. |

Actualiser un prix après expiration du TTL
Le TTL, durée de vie, limite le temps pendant lequel une copie est disponible. Son expiration supprime la copie, sans supprimer le produit DynamoDB faisant autorité.
Confirmez l’identité et inspectez les réglages :
cd /home/labex/project
aws sts \
get-caller-identity
cat app.json
L’ARN se termine par labex-ca02-operator. L’application utilise déjà cache-aside et le prix initial de 101 est 20.00. Enregistrez et affichez l’endpoint :
CACHE_HOST=$(jq -r .cache_host app.json)
echo "$CACHE_HOST"
Choisissez cinq secondes pour observer rapidement l’expiration. Seules les nouvelles écritures utilisent ce réglage ; les clés existantes ne changent pas rétroactivement :
jq '.ttl_seconds = 5' app.json > app.next.json
mv app.next.json app.json
Exécutez tout le bloc suivant sans pause : lisez le produit initial, modifiez directement DynamoDB et relisez avant les cinq secondes. La modification directe n’avertit pas le cache :
curl -sS http://127.0.0.1:8080/api/products/101
aws dynamodb \
update-item \
--table-name product-catalog \
--key '{"product_id":{"S":"101"}}' \
--update-expression 'SET price = :price' \
--expression-attribute-values '{":price":{"N":"21.00"}}' \
--return-values ALL_NEW
curl -sS http://127.0.0.1:8080/api/products/101
La source renvoie 21.00, mais la réponse immédiate reste 20.00 avec served_from: cache. AWS View montre la nouvelle source et les réglages. Une mise à jour de base n’invalide pas automatiquement le cache. Attendez au-delà du TTL et consultez :
sleep 6
curl -sS http://127.0.0.1:8080/api/products/101
La réponse renvoie 21.00 depuis la source : la clé expirée est absente, donc l’application lit DynamoDB et remet en cache la nouvelle valeur. Consultez rapidement la durée restante :
valkey-cli -h "$CACHE_HOST" -p 6379 TTL product:101
Un nombre positif indique les secondes restantes ; -2 signifie que la clé a déjà expiré. Cinq secondes sert à cette démonstration, sans recommander un TTL de production. Celui-ci dépend de l’ancienneté acceptable.

Invalider immédiatement le produit modifié
L’invalidation retire une copie pour que la prochaine lecture consulte la source actuelle. Elle complète le TTL et rend une modification connue visible sans attendre.
Le PUT HTTP fourni met d’abord à jour DynamoDB, puis supprime la clé correspondante. Exécutez ensemble remplissage, modification et deux lectures pour observer le TTL court :
curl -sS http://127.0.0.1:8080/api/products/101
curl -sS -X PUT \
-H 'Content-Type: application/json' \
--data '{"price":"22.00"}' \
http://127.0.0.1:8080/api/products/101
curl -sS http://127.0.0.1:8080/api/products/101
curl -sS http://127.0.0.1:8080/api/products/101
La réponse indique invalidation_key: product:101 et normalement removed: 1. Si la clé a expiré, removed: 0 est valable, mais la clé ciblée doit être correcte. La lecture suivante renvoie 22.00 depuis la source, puis 22.00 depuis le cache. Lecture et invalidation doivent désigner la même clé.
Vérifiez que le produit indépendant 202 reste Notebook à 12.50 :
aws dynamodb \
get-item \
--table-name product-catalog \
--key '{"product_id":{"S":"202"}}' \
--consistent-read
Laissez l’application disponible pour vérifier. Les contrôles lisent les résultats réels et la source ; ils n’exigent pas qu’une clé survive à son TTL court.

Résumé
Vous avez observé un prix périmé après une modification directe, son actualisation après expiration et une actualisation immédiate par invalidation ciblée. La source fait autorité ; le TTL limite l’ancienneté et l’application invalide la clé exacte de lecture.
Pour approfondir ce sujet, consultez la documentation AWS : TTL et obsolescence acceptable du cache; Résultats TTL de Valkey.


