Maison > Article > base de données > Pourquoi Redis est-il monothread ?
1. Pourquoi Redis est-il monothread ?
Étant donné que Redis est une opération basée sur la mémoire, le processeur n'est pas le goulot d'étranglement de Redis. Le goulot d'étranglement de Redis est très probablement la taille de la mémoire de la machine ou la bande passante du réseau. Étant donné que le monothreading est facile à mettre en œuvre et que le processeur ne deviendra pas un goulot d'étranglement, il est logique d'adopter une solution monothread.
2. Raisons détaillées :
1. Aucune consommation de performances de divers verrous n'est requise
La structure de données de Redis n'est pas uniquement constituée de simples valeurs-clés, mais également de structures complexes. comme le hachage, ces structures peuvent effectuer des opérations très fines, comme ajouter un élément après une longue liste, ajouter ou supprimer un objet
du hachage. Ces opérations peuvent nécessiter l'ajout d'un grand nombre de verrous, ce qui entraîne une surcharge de synchronisation considérablement accrue.
En bref, dans le cas d'un seul thread, 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 verrouillage, et il n'y a pas de consommation de performances causée par d'éventuels blocages.
2. Solution de cluster multi-processus monothread
La puissance du monothread est en fait très puissante, et l'efficacité de chaque cœur est également très élevée. une limite de performances plus élevée que le monothreading, mais dans l'environnement informatique actuel, même la limite supérieure du multithreading sur une seule machine ne peut souvent pas répondre aux besoins. Ce qui doit être exploré davantage, ce sont les solutions de clustering multi-serveurs, dans lesquelles le multi-threading. la technologie de threading n’est toujours pas disponible.
3. Consommation du processeur
Utilise un seul thread pour éviter les changements de contexte inutiles et les conditions de concurrence, et il n'y a pas de consommation de processeur en raison de la commutation causée par plusieurs processus ou threads.
Mais que se passe-t-il si le processeur devient le goulot d'étranglement de Redis ou si vous ne voulez pas que les autres cœurs de processeur du serveur soient inactifs ?
Vous pouvez envisager de démarrer plusieurs processus Redis supplémentaires. Redis est une base de données clé-valeur, pas une base de données relationnelle, et il n'y a aucune contrainte entre les données. Tant que le client distingue quelles clés sont placées dans quel processus Redis, tout ira bien.
3. Avantages et inconvénients du Redis monothread
1 Avantages du monoprocessus et du monothread
Le code est plus clair et la logique de traitement est plus simple
3. 🎜>
Pas besoin d'y penser Il n'y a pas d'opérations de verrouillage et de libération pour divers problèmes de verrouillage, et il n'y a pas de consommation de performances causée par d'éventuels blocages Il n'y a pas de consommation de processeur due à une commutation causée par multi-processus ou multi-threads 2. Inconvénients d'un seul processus et d'un seul thread Il ne peut pas faire ressortir les performances du processeur multicœur, mais il peut être amélioré en ouvrant plusieurs Redis instances sur une seule machinePour plus de connaissances sur Redis, veuillez visiter la colonne Redis Utilisez le didacticiel
!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!