Qu'est-ce que Redis pubsub et comment l'utiliser?
Quelqu'un m'a demandé ce Qu'était PubSub et comment créer une chaîne (dans le commentaire de ma réponse ) et je lui ai montré l'article sur redis.io = > http://redis.io/topics/pubsub . Je pense que c'est assez clair, mais je me demande si quelqu'un a une meilleure explication. Idéalement, décrivez-le clairement en utilisant redis-cli
.
1 réponses
publier/souscrire est un paradigme assez simple. Pensez-y comme si vous dirigiez un talk-show sur une station de radio. C'est publier. Vous espérez qu'au moins une ou plusieurs personnes écouteront votre chaîne pour écouter vos messages à l'émission de radio (SUBSCRIBE) et peut-être même faire quelques trucs, mais vous ne parlez pas aux gens directement .
amusons-nous avec redis-cli!
redis 127.0.0.1:6379> PUBLISH myradioshow "Good morning everyone!"
(integer) 0
redis 127.0.0.1:6379> PUBLISH myradioshow "How ya'll doin tonight?"
(integer) 0
redis 127.0.0.1:6379> PUBLISH myradioshow "Hello? Is anyone listening? I'm not wearing pants."
(integer) 0
Avis il n'y a pas les clients recevant les messages sur votre canal "myradioshow" (c'est le 0 dans la réponse). Personne n'est à l'écoute. Maintenant, ouvrez un autre redis-cli (ou pour plus de plaisir, ayez un ami ouvrir leur redis-cli et se connecter à votre serveur) et abonnez-vous au canal:
redis 127.0.0.1:6379> SUBSCRIBE myradioshow
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "myradioshow"
3) (integer) 1
retournez à votre redis-cli original et continuez votre spectacle:
redis 127.0.0.1:6379> PUBLISH myradioshow "Next caller gets a free loaf of bread!"
(integer) 1
vous remarquez que " 1 " à la fin? Vous avez un auditeur! Comme magic, dans votre terminal SUBSCRIBE-d:
1) "message"
2) "myradioshow"
3) "Next caller gets a free loaf of bread!"
bien sûr, en réalité, vous allez probablement vouloir faire des choses qui sont plus utiles que de parler à vos clients de votre mode de vie sans pantalon, tels que le tir d'événements sur votre serveur ou l'exécution d'une sorte de tâches/travaux. Peut-être pas si! :)