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 .

33
demandé sur Community 2011-06-27 03:24:47

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! :)

79
répondu Aashay Desai 2012-03-05 05:48:08