Maison >base de données >Redis >Pourquoi Redis est monothread
Les raisons pour lesquelles Redis est monothread : 1. Le monothread ne nécessite pas la consommation de performances de divers verrous ; 2. Solution de cluster multi-processus monothread 3. L'utilisation d'un seul thread évite un contexte inutile ; commutation et conditions de concurrence, et il n'y a pas de commutation causée par plusieurs processus ou threads qui consomment le processeur.
Analyse simple :
(Tutoriel recommandé : tutoriel redis)
Redis Il s'agit d'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 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 que Redis adopte une solution monothread.
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 une simple valeur-clé, mais aussi une liste et un hachage si complexes. Les structures peuvent effectuer des opérations très fines, telles que l'ajout d'un élément à la fin d'une longue liste, l'ajout ou la suppression d'un objet d'un 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 souhaitez 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 sait quelles clés sont placées dans quel processus Redis, tout ira bien.
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!