Partage de technologie

Questions d'entretien sur l'exploitation et la maintenance de Redis

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Afin d'aider tout le monde dans le parcours d'entretien, pour les étudiants qui ne sont toujours pas sûrs de Redis, nous avons compilé 40 questions d'entretien Redis courantes afin que vous ne puissiez pas paniquer pendant l'entretien et vous efforcer d'obtenir l'offre !

1. Qu'est-ce que Redis ?

Redis est entièrement open source et gratuit, est conforme au protocole BSD et constitue une base de données clé-valeur hautes performances.

Redis présente les trois caractéristiques suivantes par rapport aux autres produits de mise en cache clé-valeur :

  • Redis prend en charge la persistance des données. Il peut enregistrer les données en mémoire sur le disque et les charger à nouveau pour les utiliser lors du redémarrage.

  • Redis prend non seulement en charge les données de type clé-valeur simples, mais fournit également le stockage de structures de données telles que liste, ensemble, zset et hachage.

  • Redis prend en charge la sauvegarde des données, c'est-à-dire la sauvegarde des données en mode maître-esclave.

Avantages de Redis :

  • Performances extrêmement élevées : Redis peut lire à une vitesse de 110 000 fois/s et écrire à une vitesse de 81 000 fois/s.

  • Types de données riches : Redis prend en charge les opérations de type de données Chaînes, Listes, Hachages, Ensembles et Ensembles ordonnés dans les cas binaires.

  • Atomique : toutes les opérations dans Redis sont atomiques, ce qui signifie qu'elles sont exécutées avec succès ou pas du tout. Les opérations individuelles sont atomiques. Les opérations multiples prennent également en charge les transactions, c'est-à-dire l'atomicité, encapsulées par les instructions MULTI et EXEC.

  • Fonctionnalités riches : Redis prend également en charge la publication/abonnement, les notifications, l'expiration des clés et d'autres fonctionnalités.

En quoi Redis est-il différent des autres magasins clé-valeur ?

Redis a des structures de données plus complexes et fournit des opérations atomiques sur celles-ci. Il s'agit d'un chemin évolutif différent des autres bases de données. Les types de données de Redis sont basés sur des structures de données de base et sont transparents pour les programmeurs, sans nécessiter d'abstractions supplémentaires.

Redis s'exécute en mémoire mais peut être conservé sur le disque. Il existe donc un compromis en matière de mémoire lors de la lecture et de l'écriture à grande vitesse de différents ensembles de données, car la quantité de données ne peut pas être supérieure à la mémoire matérielle. Un autre avantage des bases de données en mémoire est que par rapport aux mêmes structures de données complexes sur disque, le fonctionnement en mémoire est très simple, donc Redis peut faire beaucoup de choses avec une forte complexité interne. De plus, en termes de format de disque, ils sont compacts et générés par ajout puisqu'ils ne nécessitent pas d'accès aléatoire.

2. Quels sont les types de données de Redis ?

Redis prend en charge cinq types de données : string (string), hash (hash), list (list), set (set) et zsetsorted set (set ordonné).

Les plus couramment utilisés dans nos projets actuels sont la chaîne et le hachage. Si vous êtes un utilisateur Redis intermédiaire et avancé, vous devez également ajouter les structures de données suivantes HyperLogLog, Geo et Pub/Sub.

Si vous dites que vous avez également joué avec des modules Redis, tels que BloomFilter, RedisSearch et Redis-ML, les yeux de l'intervieweur commenceront à briller.

3. Quels sont les avantages de l’utilisation de Redis ?

  • C'est rapide car les données sont stockées en mémoire, similaire à HashMap. L'avantage de HashMap est que la complexité temporelle de la recherche et de l'opération est O1)

  • Prend en charge les types de données riches, notamment les chaînes, les listes, les ensembles, les Zset, les hachages, etc.

  • Prend en charge les transactions et les opérations sont toutes atomiques. Ce qu'on appelle l'atomicité signifie que toutes les modifications apportées aux données sont exécutées ou pas du tout.

  • Des fonctionnalités riches, peuvent être utilisées pour la mise en cache, la messagerie, la définition du délai d'expiration par clé, elle sera automatiquement supprimée après l'expiration

4. Quels sont les avantages de Redis par rapport à Memcached ?

  • Toutes les valeurs dans Memcached sont des chaînes simples et Redis, en remplacement, prend en charge des classes de données plus riches.

  • Redis est beaucoup plus rapide que Memcached

  • Redis peut conserver ses données

5. Quelles sont les différences entre Memcache et Redis ?

  • La méthode de stockage Memecache stocke toutes les données dans la mémoire. Elle raccrochera après une panne de courant. Les données ne peuvent pas dépasser la taille de la mémoire. Redis est partiellement stocké sur le disque dur, ce qui garantit la pérennité des données.

  • Types de données pris en charge La prise en charge par Memcache des types de données est relativement simple. Redis a des types de données complexes.

  • Les modèles sous-jacents utilisés diffèrent dans leurs méthodes de mise en œuvre sous-jacentes et leurs protocoles d'application pour la communication avec les clients. Redis construit directement son propre mécanisme de VM, car si le système général appelle les fonctions système, il perdra un certain temps à se déplacer et à demander.

6. Redis est-il à processus unique et à thread unique ?

Redis est un processus unique et un thread unique. Redis utilise la technologie de file d'attente pour transformer l'accès simultané en accès série, éliminant ainsi la surcharge du contrôle série de base de données traditionnel.

7. Quelle est la capacité maximale d’un stockage intelligent de type chaîne ?

512M.

8. Quel est le mécanisme de persistance de Redis ? Quels sont les avantages et les inconvénients de chacun ?

Redis fournit deux mécanismes de persistance, les mécanismes RDB et AOF :

Méthode de persistance RDB (Redis DataBase) : fait référence à l'enregistrement de toutes les paires clé-valeur de la base de données Redis en mode semi-persistant à l'aide d'un instantané d'ensemble de données et à l'écriture des données dans un fichier temporaire à un certain moment après la persistance. est terminé, utilisez ceci. Le fichier temporaire remplace le dernier fichier persistant pour réaliser la récupération des données.

avantage:

  • Il n'y a qu'un seul fichier dump.rdb, ce qui est pratique pour la persistance.

  • La tolérance aux catastrophes est bonne, un fichier peut être enregistré sur un disque sécurisé.

  • Pour maximiser les performances, forkez le processus enfant pour terminer l'opération d'écriture et permettre au processus principal de continuer à traiter les commandes, afin que les E/S soient maximisées. Utilisez un sous-processus distinct pour la persistance, et le processus principal n'effectuera aucune opération d'E/S, garantissant les hautes performances de Redis.

  • Lorsque l'ensemble de données est volumineux, l'efficacité de démarrage est supérieure à AOF.

Inconvénients : faible sécurité des données. RDB est conservé à intervalles réguliers. Si Redis échoue pendant la persistance, une perte de données se produira.Cette méthode est donc plus adaptée lorsque les exigences en matière de données ne sont pas strictes.

Méthode de persistance AOF (Append-only file) : signifie que tous les enregistrements de ligne de commande sont stockés de manière entièrement persistante et stockés sous forme de fichiers aof au format du protocole de demande de commande Redis.

avantage:

  • Pour la sécurité des données, la persistance AOF peut être configurée avec l'attribut appendfsync. S'il y en a toujours, chaque opération de commande sera enregistrée dans le fichier AOF.

  • En écrivant des fichiers en mode ajout, même si le serveur tombe en panne au milieu, le problème de cohérence des données peut être résolu grâce à l'outil redis-check-aof.

  • Le mode de réécriture du mécanisme AOF. Avant que le fichier AOF ne soit réécrit (les commandes seront fusionnées et réécrites lorsque le fichier est trop volumineux), vous pouvez supprimer certaines commandes (telles que flushall qui a été actionnée accidentellement).

défaut:

  • Les fichiers AOF sont plus volumineux que les fichiers RDB et sont plus lents à restaurer.

  • Lorsque l'ensemble de données est volumineux, l'efficacité du démarrage est inférieure à celle de RDB.

9. Problèmes de performances courants et solutions de Redis

  • Il est préférable que le maître n'écrive pas d'instantanés de mémoire. Si le maître écrit des instantanés de mémoire, la commande save planifie la fonction rdbSave, ce qui bloquera le travail du thread principal. Lorsque l'instantané est relativement volumineux, l'impact sur les performances sera très important. le service sera suspendu par intermittence.

  • Si les données sont importantes, un esclave active les données de sauvegarde AOF et la politique est définie pour synchroniser une donnée par seconde.

  • Pour la rapidité de réplication maître-esclave et la stabilité de la connexion, il est préférable que le maître et l'esclave soient sur le même LAN.

  • Essayez d'éviter d'ajouter des esclaves à une base de données principale stressée.

  • N'utilisez pas de structure graphique pour la réplication maître-esclave. Il est plus stable d'utiliser une structure de liste chaînée unidirectionnelle, c'est-à-dire : Maître.