Quelles sont les questions et réponses de l'entretien Redis ?
Parlons des types de données de base de Redis
String : Redis n'utilise pas directement la représentation sous forme de chaîne traditionnelle du langage C, mais implémente son propre type abstrait appelé simple chaîne dynamique SDS. La chaîne en langage C n'enregistre pas ses propres informations de longueur, mais SDS enregistre les informations de longueur, ce qui réduit le temps nécessaire pour obtenir la longueur de la chaîne de O(N) à O(1), tout en évitant le débordement de tampon et en réduisant le besoin de modification. caractères. Le nombre de réallocations de mémoire requises pour la longueur de la chaîne.
Liste chaînée : la liste chaînée redis est une structure de liste chaînée acyclique bidirectionnelle. De nombreuses fonctions de publication et d'abonnement, de requête lente et de surveillance sont implémentées à l'aide de listes chaînées. Les nœuds de chaque liste chaînée sont représentés par une structure listNode. .Chaque nœud Il y a des pointeurs vers le nœud précédent et le nœud suivant, et les nœuds précédent et suivant du nœud d'en-tête pointent vers NULL.
Table de hachage de dictionnaire : une structure de données abstraite utilisée pour enregistrer des paires clé-valeur. Redis utilise des tables de hachage comme implémentation sous-jacente. Chaque dictionnaire dispose de deux tables de hachage pour une utilisation quotidienne et un rehachage. La table de hachage utilise la méthode d'adresse de chaîne pour résoudre les conflits de clés et est affectée à plusieurs paires clé-valeur à la même position d'index. -way est formée lorsque la table de hachage est étendue ou réduite, pour des raisons de disponibilité du service, le processus de rehachage n'est pas terminé en une seule fois, mais progressivement.
Liste de sauts : la liste de sauts est l'une des implémentations sous-jacentes des ensembles ordonnés. Les listes de sauts sont utilisées dans Redis pour implémenter les clés d'ensembles ordonnés et la structure interne des nœuds de cluster. La table de saut Redis se compose de zskiplist et de zskiplistNode. zskiplist est utilisé pour enregistrer les informations de la table de saut (en-tête, nœud de queue, longueur, etc.). zskiplistNode est utilisé pour représenter les nœuds de saut de table. La hauteur de couche de chaque table de saut est aléatoire à partir de 1. à 32. Nombre, dans une même table de sauts, plusieurs nœuds peuvent contenir le même score, mais l'objet membre de chaque nœud doit être unique. Les nœuds sont triés selon la taille du score. Si les scores sont identiques, ils sont triés. sont triés en fonction de la taille de l'objet membre.
Integer set intset : une structure de données abstraite de collection utilisée pour enregistrer des valeurs entières. Il n'y aura pas d'éléments en double. L'implémentation sous-jacente est un tableau.
Ziplist de liste compressée : la liste compressée est une structure de données séquentielle développée pour économiser de la mémoire. Elle peut contenir plusieurs nœuds, et chaque nœud peut enregistrer un tableau d'octets ou une valeur entière.
Sur la base de ces structures de données de base, redis encapsule son propre système d'objets, y compris la chaîne d'objets chaîne, la liste d'objets de liste, le hachage d'objet de hachage, l'ensemble d'objets de collection et l'objet de collection ordonné zset, dont chacun est utilisé au moins un élément de base structure des données.
redis définit la forme d'encodage de l'objet via l'attribut encoding pour améliorer la flexibilité et l'efficacité. Redis effectuera automatiquement des optimisations en fonction de différents scénarios. L'encodage des différents objets est le suivant :
String chaîne d'objet : int entier, chaîne dynamique simple codée embstr, chaîne dynamique simple brute
List liste d'objets : ziplist, linkedlist
Hash hachage d'objet : ziplist, hashtable
Ensemble d'objets de collection : intset, hashtable
Objet de collection ordonné zset : ziplist, skiplist
Pourquoi Redis est-il rapide ?
redis est très rapide. Un seul redis peut prendre en charge des dizaines de milliers de simultanéités par seconde. Par rapport à MySQL, les performances sont des dizaines de fois supérieures à celles de MySQL. Les principales raisons de la vitesse rapide sont :
Entièrement basé sur les opérations de mémoire
-
Implémentation du langage C, structure de données optimisée, basée sur plusieurs structures de données de base, redis a fait beaucoup d'optimisation et les performances sont extrêmement high
Utilisez un seul thread, aucun coût de changement de contexte
Basé sur un mécanisme de multiplexage d'E/S non bloquant
Alors pourquoi Redis est-il passé au multi-threading après la version 6.0 ?
redis utilise le multi-threading Les threads n'abandonnent pas complètement les threads uniques. Redis utilise toujours un modèle à thread unique pour traiter les demandes des clients. Il utilise uniquement plusieurs threads pour gérer la lecture et l'écriture des données et l'analyse du protocole.
Le but de ceci est que le goulot d'étranglement des performances de Redis réside dans les E/S du réseau plutôt que dans le processeur. L'utilisation du multithreading peut améliorer l'efficacité de la lecture et de l'écriture des E/S, améliorant ainsi les performances globales de Redis.
Savez-vous ce qu'est un raccourci clavier ? Comment résoudre le problème des touches de raccourci ?
Le soi-disant problème de raccourci clavier est qu'il y a soudainement des centaines de milliers de demandes pour accéder à une clé spécifique sur Redis, ce qui entraînera une trop grande concentration du trafic et atteindra la limite supérieure de la carte réseau physique, provoquant le problème. serveur redis pour planter et déclencher une avalanche.
Solution pour les touches de raccourci :
Répartissez les touches de raccourci sur différents serveurs à l'avance pour réduire la pression
Ajoutez le cache de deuxième niveau et chargez les données des touches de raccourci dans la mémoire à l'avance. Si Redis est en panne, aller à la requête de mémoire
Qu'est-ce que la panne de cache, la pénétration du cache, l'avalanche de cache ?
Panne du cache
Le concept de panne du cache est que l'accès simultané à une seule clé est trop élevé. Lorsqu'elle expire, toutes les demandes seront touchées directement. à la base de données. Ceci est similaire à hot. Le problème de clé est similaire, sauf que l'expiration entraîne l'envoi de toutes les requêtes à la base de données.
Solution :
Verrouiller la mise à jour, par exemple, demander d'interroger A et constater qu'il n'est pas dans le cache, verrouiller la clé A, et accédez à La base de données interroge les données, les écrit dans le cache, puis les renvoie à l'utilisateur, afin que les requêtes ultérieures puissent obtenir les données du cache.
Écrivez la combinaison du délai d'expiration dans la valeur et actualisez continuellement le délai d'expiration de manière asynchrone pour éviter ce genre de phénomène.
Pénétration du cache
La pénétration du cache signifie interroger des données qui n'existent pas dans le cache. Chaque requête atteindra la base de données, comme si c'était le cas. le cache n'existe pas.
Pour résoudre ce problème, ajoutez une couche de filtre Bloom. L'étape de fonctionnement du filtre Bloom consiste à mapper les données en K points dans le tableau de bits via une fonction de hachage, et à définir ces points sur 1 pour stocker les données.
De cette façon, lorsque l'utilisateur interroge à nouveau A et que la valeur du filtre Bloom de A est 0, elle sera renvoyée directement, et aucune demande de panne ne sera générée et n'atteindra la base de données.
Évidemment, il y aura un problème après avoir utilisé le filtre Bloom, ce qui est une erreur de jugement. Parce qu'il s'agit d'un tableau lui-même, il peut y avoir plusieurs valeurs tombant dans la même position. car plus la longueur du tableau est longue, plus la probabilité d'une erreur de jugement sera faible. Ce problème doit être traité en fonction de la situation réelle.
Cache Avalanche
Lorsqu'une panne de cache à grande échelle se produit à un moment donné, par exemple lorsque votre service de cache est en panne, un grand nombre de requêtes arrivent et frappent le DB directement. Cela peut conduire à l’effondrement de l’ensemble du système, appelé avalanche. Contrairement aux problèmes de panne et de raccourci clavier, le problème d'avalanche fait référence à l'expiration simultanée de caches à grande échelle.
Plusieurs solutions en cas d'avalanche :
-
Définissez des délais d'expiration différents pour différentes clés afin d'éviter une expiration simultanée
#🎜🎜 ##🎜 🎜# Limitation de courant Si Redis est en panne, vous pouvez limiter le courant pour éviter de planter la base de données avec un grand nombre de requêtes en même temps. - #🎜🎜 Solution de touche de raccourci du cache #L2.
- Quelles sont les stratégies d'expiration de Redis ?
redis a principalement 2 stratégies de suppression expirées
Suppression paresseuseLa suppression paresseuse signifie que la clé n'est exécutée que lors de son interrogation Détecter et supprimez-le s'il est expiré. Si ces clés expirées n'ont pas été consultées, un inconvénient évident est qu'elles occuperont toujours de la mémoire et ne pourront pas être supprimées. Suppression périodiqueDans Redis, la suppression périodique consiste à vérifier les paires clé-valeur dans la base de données lorsqu'elles sont spécifiées et à supprimer les paires clé-valeur expirées. Redis ne peut pas effectuer d'interrogation sur toutes les clés lors des opérations de suppression, donc certaines clés sont sélectionnées au hasard pour la vérification et la suppression.Alors que dois-je faire si les clés expirées ne sont pas supprimées régulièrement ou paresseusement ?
En supposant que Redis ne supprime pas les clés à chaque fois qu'il interroge les clés de manière aléatoire et régulière, et que ces clés ne sont pas interrogées, ces clés seront stockées dans Redis et ne pourront pas être supprimées À ce stade, cela conduira au mécanisme d'élimination de la mémoire de Redis.
volatile-lru : Parmi les clés avec un délai d'expiration défini, supprimez la clé la moins récemment utilisée pour l'élimination# 🎜 🎜#volatile-ttl : Supprimez la clé sur le point d'expirer de la clé avec un délai d'expiration défini Sélectionnez la clé à éliminer
allkeys-lru : Sélectionnez la clé la moins récemment utilisée clé de la clé pour l'élimination
allkeys -random : Sélectionnez aléatoirement les clés parmi les clés pour l'élimination
noeviction : Lorsque la mémoire atteint le seuil, une erreur sera signalée pour les nouvelles opérations d'écriture
# 🎜🎜#Quelles sont les méthodes de persistance ? Quelle est la différence ?
- redis les solutions de persistance sont divisées en deux types : RDB et AOF. RDB
Vous pouvez générer des fichiers RDB via SAVE ou BGSAVE.
La commande SAVE bloquera le processus redis jusqu'à ce que le fichier RDB soit généré. Pendant la période de blocage du processus, redis ne peut traiter aucune demande de commande, ce qui est évidemment inapproprié. BGSAVE déboursera un processus enfant, puis le processus enfant sera responsable de la génération du fichier RDB. Le processus parent peut continuer à traiter les demandes de commande sans bloquer le processus. AOFAOF est différent de RDB qui enregistre l'état de la base de données en enregistrant les commandes d'écriture exécutées par le serveur Redis. AOF implémente le mécanisme de persistance en trois étapes : ajouter, écrire et synchroniser. Lorsque la persistance AOF est activée, après que le serveur exécute la commande d'écriture, la commande d'écriture sera ajoutée à la fin du tampon aof_bufAvant la fin de chaque boucle d'événement sur le serveur, la fonction flushAppendOnlyFile sera appelée pour déterminer s'il faut enregistrer le contenu de aof_buf dans le fichier AOF. Cela peut être déterminé en configurant appendfsync.
always ##aof_buf内容写入并同步到AOF文件 everysec ##将aof_buf中内容写入到AOF文件,如果上次同步AOF文件时间距离现在超过1秒,则再次对AOF文件进行同步 no ##将aof_buf内容写入AOF文件,但是并不对AOF文件进行同步,同步时间由操作系统决定
Si elle n'est pas définie, l'option par défaut sera Everysec, car bien que ce soit toujours le plus sûr (une seule commande d'écriture de la boucle d'événement sera perdue), les performances sont médiocres et le mode Everysec ne peut perdre qu'une seconde. données d'horloge, tandis que l'efficacité du mode aucun est similaire à celle de chaque seconde, mais toutes les données de commande d'écriture après la dernière synchronisation du fichier AOF seront perdues.
Comment atteindre la haute disponibilité de Redis ?
Pour atteindre une haute disponibilité, une seule machine ne suffit certainement pas. Pour garantir une haute disponibilité, redis propose 2 options.
Architecture maître-esclave
Le mode maître-esclave est la solution la plus simple pour atteindre une haute disponibilité, et le cœur est la synchronisation maître-esclave. Le principe de la synchronisation maître-esclave est le suivant :
l'esclave envoie la commande de synchronisation au maître
Une fois que le maître a reçu la synchronisation, il exécute bgsave et génère un fichier RDB complet
-
le maître enregistre la commande d'écriture de l'esclave dans le cache
-
Une fois bgsave exécuté, envoyez le fichier RDB à l'esclave, et l'esclave l'exécute. Le maître envoie la commande d'écriture dans le cache à l'esclave, et l'esclave l'exécute. La commande que j'ai écrite ici est sync. après que la version redis2.8, psync a été utilisée pour remplacer sync, la raison en est que la commande sync consomme des ressources système et que psync est plus efficace.
Sentinel Les défauts de la solution maître-esclave sont encore très évidents. Si le maître est en panne, alors les données ne peuvent pas être écrites, alors l'esclave perdra sa fonction et l'architecture entière sera indisponible à moins que vous ne basculiez manuellement. La raison principale est qu'il n'existe pas de mécanisme de basculement automatique. La fonction de Sentinel est beaucoup plus complète que celle d'une simple architecture maître-esclave. Elle possède des fonctions telles que le basculement automatique, la surveillance du cluster et la notification des messages.
Sentinel peut surveiller plusieurs serveurs maître-esclave en même temps, et lorsque le maître surveillé se déconnecte, il promouvra automatiquement un esclave au rang de maître, puis le nouveau maître continuera à recevoir des commandes. L'ensemble du processus est le suivant :
Initialisez Sentinel, remplacez le code Redis ordinaire par du code spécifique à Sentinel
Initialisez le dictionnaire maître et les informations du serveur, les informations du serveur enregistrent principalement ip:port et enregistrent l'adresse et ID de l'instance
-
Créez deux connexions avec le maître, une connexion de commande et une connexion d'abonnement, et abonnez-vous à la chaîne sentinel:hello
Envoyez la commande info au maître toutes les 10 secondes pour obtenir les informations actuelles du maître et de tous ses esclaves
Quand Après avoir découvert que le maître a un nouvel esclave, la sentinelle établit également deux connexions avec le nouvel esclave et envoie une commande d'information toutes les 10 secondes pour mettre à jour les informations du maître
Sentinelle envoie une commande ping à tous les serveurs toutes les secondes. Si un certain serveur renvoie continuellement des réponses invalides dans le temps de réponse configuré, il sera marqué comme hors ligne.
Élisez une sentinelle leader. de plus de la moitié des sentinelles.
La sentinelle chef sera sélectionnée parmi le maître hors ligne et convertissez-le en maître
Laissez tous les esclaves copier les données du nouveau maître
. Définissez le maître d'origine comme serveur esclave du nouveau maître, lorsque le maître d'origine reprend la connexion, il devient le serveur esclave du nouveau maître
sentinel enverra une commande ping à toutes les instances (y compris le serveur maître-esclave et autres sentinelles) toutes les 1 seconde, et jugez s'il est hors ligne en fonction de la réponse. Cette méthode est appelée hors ligne subjective. Lorsqu'il est jugé subjectivement hors ligne, d'autres sentinelles de surveillance seront interrogées. Si plus de la moitié des votes estiment qu'il est hors ligne, il sera marqué comme objectivement hors ligne et un basculement sera déclenché.
- Pouvez-vous parler du principe du cluster redis ? Si vous comptez sur Sentinel pour atteindre une haute disponibilité de Redis et si vous souhaitez prendre en charge une concurrence élevée tout en hébergeant d'énormes quantités de données, vous avez besoin d'un cluster Redis. Le cluster Redis est une solution de stockage de données distribuée fournie par Redis. Le cluster partage des données via le partage de données et fournit des fonctions de réplication et de basculement.
Node
Un cluster Redis se compose de plusieurs nœuds, et plusieurs nœuds sont connectés via la commande cluster meet. Le processus de négociation de nœud :
Le nœud A reçoit la commande cluster meet du client
A envoie un message de rencontre à B en fonction de l'adresse IP et du numéro de port reçus
Le nœud B reçoit le message de rencontre et renvoie pong
-
A sait que B a reçu le message de rencontre, renvoie un message ping et la poignée de main est réussie
Enfin, le nœud A diffusera les informations du nœud B aux autres nœuds du cluster via le protocole Gossip, et les autres nœuds serreront également la main de B
slot
redis est enregistré sous forme de partitionnement de cluster Données, l'ensemble de la base de données du cluster est divisé en 16 384 emplacements. Chaque nœud du cluster peut traiter 0 à 16 384 emplacements. Lorsque les 16 384 emplacements de la base de données sont traités par les nœuds, le cluster est en ligne. disponible, tous les traitements géreront le statut hors ligne. Utilisez la commande cluster addlots pour attribuer des emplacements aux nœuds correspondants pour le traitement. -
slot est un tableau de bits, la longueur du tableau est de 16384/8 = 2048, et chaque bit du tableau est représenté par 1 à traiter par le nœud, et 0 représente non traité. Comme le montre la figure, cela signifie. ce nœud A traite les emplacements 0 à 7.
Lorsque le client envoie une commande au nœud, s'il s'avère que l'emplacement appartient au nœud actuel, le nœud exécutera la commande. Sinon, une commande MOVED sera renvoyée au client pour guider le client vers le nœud. nœud correct. (Le processus MOVED est automatique)
Si vous ajoutez ou supprimez des nœuds, il est également très pratique de réattribuer des emplacements. Redis fournit des outils pour aider à réaliser la migration des emplacements. L'ensemble du processus est entièrement en ligne et n'a pas besoin d'arrêter le service.
Failover
Si le nœud A envoie un message ping au nœud B et que le nœud B ne répond pas au pong dans le délai spécifié, alors le nœud A marquera le nœud B comme pfail et suspecté d'être hors ligne, et en même temps, envoyer l'état de B sous la forme d'un message. Envoyé à d'autres nœuds. Si plus de la moitié des nœuds marquent B comme pfail, B sera marqué comme échec hors ligne. À ce moment, un basculement se produira et un nœud esclave avec plus de réplication. Les données seront sélectionnées en premier pour devenir le nœud maître et prendront en charge l'emplacement du nœud hors ligne. L'ensemble du processus est très similaire à celui de Sentinel et est basé sur le protocole Raft pour l'élection.
Comprenez-vous le mécanisme de transaction Redis ?
redis implémente le mécanisme de transaction via MULTI, EXEC, WATCH et d'autres commandes. Le processus d'exécution de la transaction exécute une série de plusieurs commandes en séquence en même temps, et pendant l'exécution, la transaction ne sera pas interrompue, ni le client. exécuter Des requêtes supplémentaires sont effectuées jusqu'à ce que toutes les commandes aient été exécutées. Le processus d'exécution de la transaction est le suivant :
Le serveur reçoit la requête du client, et la transaction commence par MULTI
Si le client est dans l'état de transaction, la transaction sera mise en file d'attente et renvoyée au client QUEUED, sinon il sera directement Exécuter cette commande
Lors de la réception de la commande EXEC du client, la commande WATCH surveille si la clé dans l'ensemble de la transaction a été modifiée. Si tel est le cas, elle renvoie une réponse vide au client. pour indiquer un échec. Sinon, redis parcourra toute la file d'attente des transactions et exécutera Toutes les commandes enregistrées dans la file d'attente renverront finalement les résultats au client. Le mécanisme WATCH lui-même est un mécanisme CAS. Les clés surveillées seront enregistrées dans une liste chaînée. une clé est modifiée, le flag REDIS_DIRTY_CAS sera ouvert, moment auquel le serveur refusera d'exécuter la transaction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

L'utilisation des opérations Redis pour verrouiller nécessite l'obtention du verrouillage via la commande setnx, puis en utilisant la commande Expire pour définir le temps d'expiration. Les étapes spécifiques sont les suivantes: (1) Utilisez la commande setnx pour essayer de définir une paire de valeurs de clé; (2) Utilisez la commande Expire pour définir le temps d'expiration du verrou; (3) Utilisez la commande del pour supprimer le verrouillage lorsque le verrouillage n'est plus nécessaire.

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

Utilisez l'outil de ligne de commande redis (Redis-CLI) pour gérer et utiliser Redis via les étapes suivantes: Connectez-vous au serveur, spécifiez l'adresse et le port. Envoyez des commandes au serveur à l'aide du nom et des paramètres de commande. Utilisez la commande d'aide pour afficher les informations d'aide pour une commande spécifique. Utilisez la commande QUIT pour quitter l'outil de ligne de commande.

Les causes de la perte de données redis incluent les défaillances de mémoire, les pannes de courant, les erreurs humaines et les défaillances matérielles. Les solutions sont: 1. Stockez les données sur le disque avec RDB ou AOF Persistance; 2. Copiez sur plusieurs serveurs pour une haute disponibilité; 3. Ha avec Redis Sentinel ou Redis Cluster; 4. Créez des instantanés pour sauvegarder les données; 5. Mettre en œuvre les meilleures pratiques telles que la persistance, la réplication, les instantanés, la surveillance et les mesures de sécurité.
