2011-06-26 11 views

Respuesta

74

Publicar/suscribir es un paradigma bastante simple. Piense que está ejecutando un programa de entrevistas en una estación de radio. Eso es PUBLICAR. Esperas que al menos una o más personas seleccionen tu canal para escuchar tus mensajes en el programa de radio (SUSCRIBIRSE) e incluso hacer algunas cosas, pero no estás hablando con la gente directamente.

¡Divirtámonos un poco con 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 

Aviso no hay clientes que reciben los mensajes en su canal "myradioshow" (que es el 0 en la respuesta). Nadie está escuchando. Ahora, abra otra Redis-cli (o, a veces más divertido tener un amigo abrir sus Redis-cli y conectarse a su servidor) y suscribirse al canal:

redis 127.0.0.1:6379> SUBSCRIBE myradioshow 
Reading messages... (press Ctrl-C to quit) 
1) "subscribe" 
2) "myradioshow" 
3) (integer) 1 

Ir de nuevo a su original, Redis-CLI y continúe su demostración:

redis 127.0.0.1:6379> PUBLISH myradioshow "Next caller gets a free loaf of bread!" 
(integer) 1 

¿Tenga en cuenta que "1" al final? ¡Tienes un oyente! Al igual que la magia, en su terminal SUSCRIPCIÓN-d:

1) "message" 
2) "myradioshow" 
3) "Next caller gets a free loaf of bread!" 

Por supuesto, en la realidad, lo que probablemente va a querer hacer cosas que son más útiles que decirle a sus clientes acerca de su estilo de vida pantalones menos, como de fuego eventos en su servidor o ejecutar algún tipo de tareas/trabajos. ¡Quizás no sin embargo! :)

+1

¿Por qué el suscriptor reciben "subscribe" y "myradioshow", como los mensajes en lugar de "Buenos días a todos!" ¿etc.? – bcoughlan

+4

Esos son solo mensajes de confirmación de Redis en forma de respuesta masiva, que le indica lo que hizo y a qué se suscribió, y el 1 indica una respuesta exitosa. Vea aquí: http://redis.io/commands/subscribe. En mi ejemplo, el SUBSCRIBE sucede después de que los mensajes iniciales consiguieron publican, por lo que no reciben "Buenos días a todos!" etc. porque esos mensajes ya se han ido. En otras palabras, SUBSCRIBE solo recibe mensajes publicados que se publican _después_ de la suscripción (es decir, no es una cola). –

+0

@AashayDesai un escenario común cuando uno quiere/necesita usar publicar y suscribirse sería útil – kentor

Cuestiones relacionadas