Partager via


Résoudre les problèmes de perte de données dans Azure Cache pour Redis

Cet article explique comment diagnostiquer une perte de données partielle ou complète qui se produit dans Le Cache Azure pour Redis.

Important

Azure Cache pour Redis a annoncé sa chronologie de mise hors service pour toutes les références SKU. Nous vous recommandons de déplacer vos instances Azure Cache pour Redis existantes vers Azure Managed Redis dès que vous le pouvez.

Pour plus d’informations sur la mise hors service :

Perte partielle de clé

Le Cache Azure pour Redis ne supprime pas de manière aléatoire les clés après leur stockage en mémoire, mais elle supprime les clés en réponse aux stratégies d’expiration, aux stratégies d’éviction et aux commandes de suppression de clés explicites. Vous pouvez exécuter ces commandes sur la console ou via l’interface CLI Redis.

Les clés écrites sur le nœud principal dans une instance Azure Redis Premium ou Standard peuvent ne pas être disponibles immédiatement sur un réplica. Les données sont répliquées du primaire vers le réplica de manière asynchrone et non bloquante.

Si certaines clés disparaissent de votre cache, vérifiez les causes possibles suivantes :

La cause Descriptif
Expiration des clés Les clés ont été supprimées en raison de délais d’attente imposés à celles-ci.
Éviction des clés Les clés ont été supprimées sous l'effet de la pression de la mémoire.
Suppression des clés Les clés ont été supprimées par des commandes de suppression explicites.
Réplication asynchrone Les clés n'étaient pas disponibles sur une réplique en raison de délais dans la réplication des données.

Expiration des clés

Le Cache Azure pour Redis supprime automatiquement une clé si la clé est affectée à un délai d’expiration et que cette période passe. Pour plus d’informations sur l’expiration de la clé Redis, consultez la documentation de la commande Redis EXPIRE . Les valeurs de délai d’expiration peuvent également être définies à l’aide des commandes SET, SETEX, GETSET et autres *STORE .

Pour obtenir des statistiques sur le nombre de clés qui ont expiré, utilisez la commande INFO . La section Stats montre le nombre total de clés arrivées à expiration. La Keyspace section fournit plus d’informations sur le nombre de clés avec des délais d’expiration et la valeur moyenne du délai d’attente.

# Stats

expired_keys:46583

# Keyspace

db0:keys=3450,expires=2,avg_ttl=91861015336

Éviction des clés

Le Cache Azure pour Redis nécessite de l’espace mémoire pour stocker des données et vider les clés pour libérer de la mémoire disponible si nécessaire. Lorsque les used_memoryused_memory_rss valeurs approchent du paramètre configuré maxmemory , Azure Redis commence à supprimer les clés de la mémoire en fonction de la stratégie de cache.

Vous pouvez surveiller le nombre de clés supprimées à l’aide de la commande INFO .

# Stats

evicted_keys:13224

Suppression des clés

Les clients Redis peuvent émettre les commandes Redis DEL ou HDEL pour supprimer explicitement les clés d’Azure Redis. Utilisez la commande INFO pour effectuer le suivi du nombre d’opérations de suppression. Si les commandes DEL ou HDEL ont été appelées, elles sont répertoriées dans la section Commandstats.

# Commandstats

cmdstat_del:calls=2,usec=90,usec_per_call=45.00

cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00

Réplication asynchrone

Les instances Azure Cache pour Redis de niveau Standard ou Premium sont configurées avec un nœud principal et au moins un réplica. Les données sont copiées de façon asynchrone du nœud principal vers un réplica à l’aide d’un processus en arrière-plan.

La réplication Redis sur le site web Redis décrit le fonctionnement général de la réplication des données Redis. Pour les scénarios où les clients écrivent fréquemment dans Redis, une perte de données partielle peut se produire, car la réplication n’est pas conçue pour être instantanée.

Par exemple, si le serveur principal tombe en panne après qu’un client y écrit une clé, mais avant que le processus en arrière-plan n’ait la possibilité d’envoyer cette clé au réplica, la clé est perdue lorsque le réplica prend le relais en tant que nouveau réplica principal.

Perte de clé complète

Si la plupart ou toutes les clés disparaissent de votre cache, vérifiez les causes possibles suivantes :

La cause Descriptif
Vidage des clés Les clés ont été vidées manuellement.
Sélection incorrecte de la base de données Azure Redis est défini pour utiliser une base de données non définie.
Échec de l’instance de Redis Le serveur Redis n’est pas disponible.

Vidage des clés

Les clients Redis Azure peuvent appeler la commande Redis FLUSHDB pour supprimer toutes les clés d’une base de données unique ou FLUSHALL pour supprimer toutes les clés de toutes les bases de données dans un cache Redis. Pour savoir si les clés ont été vidées, utilisez la commande INFO . La Commandstats section indique si l’une ou l’autre FLUSH commande a été appelée.

# Commandstats

cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00

cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00

Sélection incorrecte de la base de données

Chaque base de données est une unité logiquement distincte et contient un jeu de données différent. Azure Cache pour Redis utilise la base de données db0 par défaut. Si vous basculez vers une autre base de données comme db1 et essayez de lire des clés à partir de celle-ci, Azure Redis ne les trouve pas. Utilisez la commande Redis SELECT pour rechercher des clés dans d’autres bases de données disponibles.

Échec de l’instance de Redis

Redis conserve les données en mémoire sur les machines physiques ou virtuelles qui hébergent le cache Redis. Une instance Azure Cache pour Redis de niveau de base s’exécute uniquement sur une seule machine virtuelle. Si cette machine virtuelle tombe en panne, toutes les données que vous avez stockées dans le cache sont perdues.

Les caches des niveaux Standard et Premium offrent une résilience plus élevée contre la perte de données à l’aide de deux machines virtuelles dans une configuration répliquée. Quand le nœud principal d’un tel cache échoue, le nœud de réplica prend le relais pour traiter automatiquement les données.

Ces machines virtuelles se trouvent sur des domaines distincts pour les erreurs et les mises à jour, afin de réduire le risque que les deux machines virtuelles ne soient pas disponibles en même temps. Si une panne de centre de données majeure se produit, toutefois, les deux machines virtuelles peuvent tomber en panne. Dans ces rares cas, vos données sont perdues. Envisagez d’utiliser la persistance des données et la géoréplication pour améliorer la protection des données contre les défaillances d’infrastructure.