Maison  >  Article  >  base de données  >  Pourquoi Redis est-il si rapide ?

Pourquoi Redis est-il si rapide ?

(*-*)浩
(*-*)浩original
2019-11-22 09:12:345107parcourir

Pourquoi Redis est-il si rapide ?

Redis est une base de données à mémoire pure, qui est généralement une simple opération d'accès. Les threads prennent beaucoup de temps, et le temps passé est principalement concentré sur les IO, donc le. la vitesse de lecture est rapide. (Apprentissage recommandé : Tutoriel vidéo Redis)

Parlons d'IO Redis utilise des E/S non bloquantes, un multiplexage d'E/S et utilise un seul thread pour interroger le descripteur. ouverture, fermeture, lecture et écriture de la base de données dans des événements, réduisant ainsi le changement de contexte et la concurrence lors du changement de thread.

Redis adopte un modèle monothread, qui garantit l'atomicité de chaque opération et réduit le changement de contexte de thread et la concurrence.

De plus, la structure des données est également très utile. Redis utilise une structure de hachage tout au long du processus, qui a une vitesse de lecture rapide. Il existe également des structures de données spéciales qui optimisent le stockage des données, telles que les tables de compression. . Compressez et stockez des données courtes, un autre exemple est celui des tables de sauts et utilisez des structures de données ordonnées pour accélérer la lecture.

Un autre point est que Redis utilise son propre séparateur d'événements, qui est relativement efficace, il utilise une méthode d'exécution non bloquante en interne et a une capacité de débit relativement importante.

Entièrement basées sur la mémoire, la plupart des requêtes sont des opérations purement mémoire, très rapides.

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 O(1); la structure est simple et adaptée aux opérations de données. La structure des données dans Redis est spécialement conçue

pour éviter les changements de contexte inutiles et les conditions de concurrence, et il n'y a aucune consommation causée par le changement ; plusieurs processus ou threads, il n'est pas nécessaire de prendre en compte divers problèmes de verrouillage, il n'y a pas d'opérations de verrouillage et de libération du verrou, et il n'y a pas de consommation de performances causée par d'éventuels blocages

Utilisation d'un multi-processus ou threads. Modèle de multiplexage d'E/S de canal, IO non bloquantes ;

Utilisez différents modèles sous-jacents, les méthodes d'implémentation sous-jacentes et les protocoles d'application pour la communication avec les clients sont différents. Redis construit directement son propre mécanisme de VM. appels système généraux Pour les fonctions système, un certain temps sera perdu pour déplacer et demander ;

Les points ci-dessus sont relativement faciles à comprendre. Ci-dessous, nous discuterons brièvement du modèle de réutilisation des E/S multicanaux :

(1) Modèle de multiplexage d'E/S multicanal

Le modèle de multiplexage d'E/S multicanal utilise la sélection, l'interrogation et l'epoll pour surveiller les E/S événements de plusieurs flux en même temps. Capacité, lorsqu'il est inactif, bloquera le thread actuel. Lorsqu'un ou plusieurs flux ont des événements d'E/S, il sortira de l'état bloqué, de sorte que le programme interrogera tous les flux (epoll interroge uniquement). Interrogez les flux qui ont réellement émis des événements) et ne traitez que les flux prêts en séquence. Cette approche évite un grand nombre d'opérations inutiles.

Ici, « multiple » fait référence à plusieurs connexions réseau, et « réutilisation » fait référence à la réutilisation du même fil. L'utilisation de la technologie de multiplexage d'E/S multicanal permet à un seul thread de gérer efficacement plusieurs demandes de connexion (minimisant la consommation de temps des E/S du réseau), et Redis exploite les données en mémoire très rapidement, ce qui signifie que les opérations en mémoire ne le feront pas. devenir un goulot d'étranglement qui affecte les performances de Redis. Les points ci-dessus contribuent principalement au débit élevé de Redis.

Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne

Introduction au didacticiel d'utilisation de la base de données Redis

pour apprendre !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn