Maison > Article > base de données > Redis est-il thread-safe ?
Redis est monothread :
Monothread signifie que le module de requête réseau utilise un seul thread (il n'est donc pas nécessaire de prendre en compte la sécurité de la concurrence), c'est-à-dire un seul thread gère toutes les requêtes réseau. D'autres modules utilisent toujours plusieurs threads.
Sécurité des threads (apprentissage recommandé : Tutoriel vidéo Redis)
Redis adopte en fait le concept de fermeture de thread, fermant les tâches dans un seul thread, ce qui évite naturellement les problèmes de sécurité des threads. Cependant, pour les opérations composites qui reposent sur plusieurs opérations Redis, des verrous sont toujours requis et ils peuvent être distribués.
Les raisons pour lesquelles Redis peut s'exécuter rapidement :
(1) La grande majorité des requêtes sont des opérations de mémoire pure (très rapides)
(2 ) Utilise un seul thread pour éviter les changements de contexte inutiles et les conditions de concurrence
(3) Multiplexage IO - IO non bloquant (Que signifie le multiplexage IO ?)
Multiplexage IO Il existe trois façons de réutiliser : sélectionnez , sondage et epoll. Il convient de noter que select et poll ne sont pas sécurisés pour les threads, tandis qu'epoll est sécurisé pour les threads
L'implémentation interne de Redis utilise epoll, en utilisant epoll + un cadre d'événements simple implémenté par lui-même. Lire, écrire, fermer et se connecter dans epoll sont tous convertis en événements, puis utiliser la fonction de multiplexage d'epoll pour ne jamais perdre de temps sur io. Ces trois conditions ne sont pas indépendantes les unes des autres, notamment la première, si la demande est faite. Tous prennent du temps, et le débit et les performances de l'utilisation d'un seul thread peuvent être imaginés. Il faut dire que redis a choisi la solution technique adaptée à des scénarios particuliers.
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 O(1)
Tutoriel d'introduction à l'utilisation de la base de données Redis pour en savoir plus !
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!