Maison  >  Article  >  base de données  >  Redis est-il thread-safe ?

Redis est-il thread-safe ?

(*-*)浩
(*-*)浩original
2019-06-18 10:46:327392parcourir

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.

Redis est-il thread-safe ?

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)

Prise en charge riche Le type de données prend en charge la chaîne, la liste, l'ensemble, l'ensemble trié, le hachage


et prend en charge les transactions. Toutes les opérations sont atomiques. Ce qu'on appelle l'atomicité signifie que toutes les modifications apportées aux données sont exécutées. ou pas exécuté du tout


Fonctionnalités riches : peut être utilisé pour la mise en cache, la messagerie, la définition du délai d'expiration par clé, il sera automatiquement supprimé après l'expiration


Pour plus de Redis articles techniques connexes, veuillez visiter la colonne

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!

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