Parfait, les 445 pages internes d'Ali de la collection d'analyse de code source de Redis sont open source! Maintenant c'est très explosif!

Préface

Dans le monde open source, les représentants typiques des services hautes performances sont Nginx et Redis. En regardant le code source de ces deux logiciels, ils sont à la fois très concis et efficaces, et ils sont également basés sur des mécanismes d'E / S réseau asynchrones, donc pour les programmeurs ou les passionnés qui souhaitent apprendre des services performants, étudiez ces deux services réseau. Le code source est très nécessaire.

Nginx a actuellement de nombreux livres sur le marché, mais Redis est en effet très peu nombreux. La version Redis s'est développée très rapidement ces dernières années, de la version 2.x stable à la version 5.0 qui a ajouté de nombreuses excellentes fonctionnalités.Il n'y a pas de données pour une explication systématique de ces fonctionnalités. Cependant, le livre "Conception Redis 5 et analyse du code source" apporté par l'éditeur à côté de vous comble une lacune majeure dans l'apprentissage de la technologie Redis 5.0 et constitue un moyen efficace pour les collègues techniques de comprendre en profondeur le mécanisme d'implémentation du noyau Redis.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

L'éditeur vous expliquera le document "Conception Redis 5 et analyse du code source" en trois parties: la préface, la table des matières et le contenu principal. En même temps, j'espère que cet article pourra vous aider à apprendre, et j'espère qu'il plaira à tous! !

Jetons d'abord un coup d'œil à ce catalogue Redis

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

contenu principal

Le contenu de ce livre est divisé en trois parties, un total de 22 chapitres

Le premier article : le chapitre 1 présente brièvement Redis, ainsi que la manière de compiler, d'installer et d'étudier Redis; les chapitres 2 à 8 se concentrent sur les SDS, les tables de saut, les listes de fin de presse, les dictionnaires, les ensembles d'entiers, les listes rapides et les structures de données Stream atteindre.

Le second : Le chapitre 9 Redis explique le cycle de vie du processus de mise en œuvre de la commande, il est important de lire; Les chapitres 10 à 19, respectivement, expliquaient les clés, les chaînes, les tables de hachage, les listes, les ensembles, les ensembles ordonnés, GEO, Implémentation des commandes liées au flux de données HyperLog.

Le troisième chapitre : Les chapitres 20-22 expliquent brièvement la mise en œuvre de la persistance, de la réplication maître-esclave et du clustering, sans extension détaillée, j'espère guider le lecteur

Chapitre 1, Chapitre 1 ~ Chapitre 8

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 1. Ce chapitre présente d'abord le processus de développement de Redis et les nouvelles fonctionnalités de Redis 5.0. Ensuite, il s'est concentré sur la façon de lire le code source de Redis, et a brièvement présenté les méthodes d'installation et de débogage du code source de Redis pour jeter les bases pour que chacun apprenne les chapitres suivants.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 2. Ce chapitre présente la structure des données de SDS et l'implémentation de l'API de base. Dans le processus d'analyse du code source, nous pouvons savoir comment les fonctionnalités de SDS sont réalisées.

l) Comment le SDS est-il compatible avec les chaînes de langage C? Comment garantir la sécurité binaire?

Le buf dans l'objet SDS est un tableau flexible. Lorsqu'il est appelé par la couche supérieure, le SDS renvoie directement buf. Puisque buf est un pointeur directement vers le contenu, il est compatible avec les fonctions du langage C. Lorsque le contenu est réellement lu, SDS limitera la longueur de lecture à travers len au lieu de "i0", assurant la sécurité binaire.

2) Quelle est la particularité de sdshdr5?

sdshdr5 est uniquement responsable du stockage des chaînes de moins de 32 octets. En général, le stockage de petites chaînes est plus courant, donc Redis compresse davantage la structure de données de sdshdr5, met le type et la longueur de sdshdr5 dans le même attribut, et utilise les 3 bits bas d'indicateurs pour stocker le type et les 5 bits hauts pour stocker la longueur. . Lors de la création d'une chaîne vide, sdshdr5 sera remplacé par sdshdr8.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

En raison du manque d'espace, l'éditeur ne présentera pas le contenu des articles en détail un par un, mais coupera le contenu principal. Si vous avez besoin de ce document "Redis 5 Design and Source Analysis", vos amis et l'assistant VX ci-dessous peuvent l'obtenir gratuitement!

 

Le chapitre 3 , ce chapitre présente les principes de base et le processus de mise en œuvre des tables de saut. Le principe de la table de sauts est simple et la complexité moyenne de sa requête, de son insertion et de sa suppression est O (logN). La liste de sauts est principalement utilisée dans l'implémentation sous-jacente de collections ordonnées.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 4 , ce chapitre introduit d'abord la structure de stockage de la liste compressée, puis analyse en détail les opérations de base de la liste compressée à partir du niveau source: création d'une liste compressée, insertion d'éléments, suppression d'éléments et parcours de la liste compressée, et enfin analyse les raisons de la mise à jour en chaîne de la liste compressée Et la solution. Grâce à l'étude de ce chapitre, chacun peut avoir une compréhension plus approfondie des listes compressées.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 5 , ce chapitre présentera l'une des structures de données importantes de Redis database-dictionary. Qu'est-ce qu'un dictionnaire? Comment Redis implémente-t-il un dictionnaire? Quelles sont les opérations et applications de base d'un dictionnaire? Voici trois questions à expliquer étape par étape.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 6, ce chapitre présente d'abord la structure de stockage d'intset et vérifie la méthode de stockage réelle lorsqu'un type de collection est stocké en tant qu'intset via GDB, puis introduit les méthodes d'ajout, de suppression et de recherche d'éléments dans intset. Enfin, certaines API courantes et la complexité opérationnelle de intsct sont introduites.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 7 , ce chapitre présente principalement la liste rapide de structure de données de base couramment utilisée dans Redis, présente principalement la situation générale de la liste rapide et le stockage sous-jacent de la compression. De plus, nous avons présenté en détail les opérations de base de quicklist et décrit les changements dans le stockage des données dans diverses situations. Enfin, nous donnons l'interface API commune de quicklist et sa complexité.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 8 , ce chapitre présente principalement l'implémentation sous-jacente de Stream. Tout d'abord, il explique les deux structures de données Listpack et Rax sur lesquelles la structure Stream doit s'appuyer, et présente en détail les opérations de base de ces deux structures. Après cela, il a expliqué comment Stream utilise ces deux structures.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Deuxième partie, Chapitre 9 ~ Chapitre 19

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 9 , ce chapitre présente d'abord certaines structures de base, telles que la structure d'objet robj, la structure client client, la structure serveur redisServer et la structure de commande redisCommand. Enfin, ce chapitre présente l'ensemble du processus de traitement des requêtes de commande client par le serveur, y compris la surveillance du démarrage du serveur, la réception des requêtes de commande et la rupture, l'exécution des requêtes de commande et le retour des réponses de commande, etc., afin de jeter les bases pour que chacun apprenne les chapitres suivants.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 10 , les commandes introduites dans ce chapitre n'ont pas besoin de déterminer le type spécifique et peuvent agir sur n'importe quel type de clé. Notez que: la commande move ne peut pas fonctionner en mode cluster; certaines fonctions de la commande sort (sous-commande byigct) sont limitées, dcl et L'utilisation de lunlink doit être différenciée. Comme del, les commandes qui peuvent provoquer le blocage du serveur lorsqu'elles sont utilisées incluent hgetall, lrange, smembers, flushall, flushdb, keys, etc. Les trois premières commandes sont comparées à la commande del lorsqu'elle est utilisée. Facilement négligés, flushall et flushdb ont des paramètres qui peuvent être utilisés de manière asynchrone. Pour plus de détails, veuillez vous référer aux chapitres correspondants.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 11 , ce chapitre présente les commandes de chaîne Redis. Les commandes sct et get sont les commandes les plus couramment utilisées dans Redis. La couche inférieure de la commande string est réalisée au moyen de sds, et le paramétrage et l'acquisition des données sont réalisés via la structure robj. La valeur-clé de la chaîne et le délai d'expiration sont stockés dans le dictionnaire redisDb.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 12 , ce chapitre présente principalement l'implémentation sous-jacente des commandes liées au hachage fournies par Redis. Nous introduisons d'abord la façon dont Redis stocke la structure de hachage, c'est-à-dire, ziplist ou table de hachage. Lorsque la longueur de field-valuc est courte et que le nombre de valeurs fiecld est petit, Redis utilise ziplist pour le stockage, sinon il utilise une table de hachage. Après cela, j'ai résumé la facilité d'utilisation de Redis et l'interface unifiée fournie au monde extérieur après avoir intégré ces deux structures. Enfin, il explique en détail comment Redis utilise l'interface intégrée ci-dessus pour implémenter des commandes liées au hachage.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 13 , Ce chapitre décrit l'implémentation des commandes de liste dans Redis La structure de données de la couche de compte de liste utilise la liste rapide. Premier de ce chapitre

Introduction des concepts de base des piles et des files d'attente, et comment implémenter les piles et les files d'attente via push / pop; deuxièmement, introduit le blocage de liste

La réalisation de la commande, via la commande blpop pour expliquer le processus de blocage du client, et le processus de blocage du client, le processus également

Il est plus compliqué et demande aux lecteurs de l'étudier attentivement; enfin, introduit quelques opérations de liste et commandes de requête courantes.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 14 , ce chapitre présente les différentes commandes des collections dans Redis. Les commandes incluent des opérations sur un seul ensemble et des opérations entre plusieurs ensembles. À partir du code source, nous pouvons voir que la couche inférieure de la collection est basée sur les deux structures de données de base de dict et intset. La plupart des opérations sont traitées séparément, et l'efficacité de l'insertion et de la suppression dépend également de dict et intset. Lors de l'apprentissage du code source d'une collection de commandes, vous souhaiterez peut-être combiner l'apprentissage de la structure de données dans les chapitres 5 et 6.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 15 , ce chapitre explique principalement les commandes liées aux ensembles ordonnés Selon la taille des éléments, l'implémentation sous-jacente d'ensembles ordonnés est divisée en deux types, l'un est ziplist, l'autre est dict et skiplist. Sur la base de ces trois structures de données, les opérations de base des ensembles ordonnés, des opérations par lots et des opérations d'ensembles sont analysées. J'espère aider les lecteurs à comprendre et à maîtriser les commandes et les principes liés aux ensembles ordonnés.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 16 , cette section présente d'abord l'historique de développement de l'algorithme geohash, puis explique en détail l'implémentation des commandes liées à GEO dans Redis. Dans le processus d'introduction de l'implémentation des commandes liées à Redis GEO, j'ai également expliqué les merveilleux algorithmes de manipulation de bits, dans l'espoir d'inspirer les lecteurs.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 17 , la première section traite de l'évolution de l'algorithme de comptage de base, de l'algorithme LC initial à l'algorithme LLC, puis à l'algorithme HLL. L'algorithme LC est plus précis lorsque la base est petite, LLC a un avantage lorsque la base est grande, et AC est une simple combinaison de LC et LLC, et HLL est un certain nombre d'améliorations d'optimisation basées sur LLC. La deuxième section explique l'implémentation de l'algorithme HLL de Redis, et la troisième section explique l'implémentation de la commande HypcrLogLog.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 18 , ce chapitre explique l'implémentation du code source des commandes liées à Stream. En raison du manque d'espace, l'implémentation de certaines commandes ne donne qu'un aperçu général. Si vous souhaitez en savoir plus sur les commandes, vous pouvez afficher automatiquement le code source de Redis 5.0.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 19 , ce chapitre présente l'implémentation des scripts de transactions, de publication-abonnement et Lua dans Redis. Les deux choses et les scripts Lua peuvent atteindre l'atomicité, mais les scripts Lua sont plus puissants; les fonctions de publication et d'abonnement peuvent également être implémentées en utilisant le nouveau Stream dans Redis 5.0. Pour plus de détails, reportez-vous à l'introduction dans le chapitre Strcam de ce livre.

Grâce à ce chapitre, tout le monde peut avoir une compréhension plus approfondie des transactions, de la publication et de l'abonnement et des scripts Lua dans Redis, afin qu'ils puissent être mieux appliqués à la pratique.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Troisième partie, Chapitre 20 ~ Chapitre 22

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Chapitre 20 , ce chapitre présente les deux méthodes de Redis pour obtenir la persistance, RDB et AOF. Tout d'abord, il présente la méthode d'implémentation de RDB et le format spécifique du fichier RDB, et analyse le fichier RDB à travers un exemple. Deuxièmement, il introduit la méthode de réalisation d'AOF et la réalisation de réécriture AOF. En comparant les avantages et les inconvénients d'AOF et RDB, a finalement introduit l'implémentation de la persistance hybride Redis.

Grâce à l'étude de ce chapitre, nous pouvons comprendre le principe de la persistance Redis, faire des compromis sur la sécurité et les performances des données en fonction de la situation réelle, et configurer raisonnablement les paramètres de persistance Redis.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 21 , ce chapitre présente d'abord la réalisation de la fonction de réplication maître-esclave, à partir de laquelle vous pouvez apprendre les idées de conception optimisées de Redis pour la réplication maître-esclave. Lors de l'introduction de l'implémentation du code source de réplication maître-esclave, introduit d'abord la définition de ses principales variables de données, et enfin introduit en détail la réalisation des sept principaux processus de réplication maître-esclave. Je crois que grâce à l'étude de l'article, les lecteurs devraient avoir une compréhension plus approfondie de la réplication maître-esclave.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Le chapitre 22 , ce chapitre présente d'abord plusieurs problèmes que le cluster doit résoudre, puis présente spécifiquement comment le cluster Redis résout ces problèmes. Il se concentre sur la façon d'implémenter la commutation maître-esclave dans un cluster Redis, le contexte et les principes de la dérive des répliques, et les idées spécifiques de la migration des fragments. Enfin, 9 formats de paquets de données pour la communication entre les clusters Redis sont décrits en détail.

Incroyable!  Ali interne 445 pages de la collection d'analyse de code source Redis populaire enfin open source

 

Enfin

L'éditeur a déjà présenté le document "Redis 5 Design and Source Code Analysis" à partir des trois parties de la préface, de la table des matières et du contenu principal. Les amis intéressés peuvent le recevoir gratuitement en ajoutant l'assistant VX ci-dessous!

 

Je suppose que tu aimes

Origine blog.csdn.net/GYHYCX/article/details/109244185
conseillé
Classement