Кто-то спросил меня, что такое PubSub и как создать канал (в комментарии от мой ответ), и я указал ему на статью на redis.io => http://redis.io/topics/pubsub. Я думаю, что это довольно ясно, но мне интересно, есть ли у кого-нибудь лучшее объяснение. В идеале четко опишите его, используя redis-cli
.
Что такое Redis pubsub и как его использовать?
Ответы (1)
Публикация/подписка — довольно простая парадигма. Представьте, что вы ведете ток-шоу на радиостанции. Это ПУБЛИКАЦИЯ. Вы надеетесь, что по крайней мере один или несколько человек подхватят ваш канал, чтобы послушать ваши сообщения в радиопередаче (ПОДПИСАТЬСЯ) и, возможно, даже что-то сделать, но вы не общаетесь с людьми напрямую .
Давайте повеселимся с 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
Обратите внимание, что нет клиентов, получающих сообщения на вашем канале «myradiohow» (это 0 в ответе). Никто не слушает. Теперь откройте еще один redis-cli (или, чтобы повеселиться, попросите друга открыть свой redis-cli и подключиться к вашему серверу) и ПОДПИСАТЬСЯ на канал:
redis 127.0.0.1:6379> SUBSCRIBE myradioshow
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "myradioshow"
3) (integer) 1
Вернитесь к исходному redis-cli и продолжите свое шоу:
redis 127.0.0.1:6379> PUBLISH myradioshow "Next caller gets a free loaf of bread!"
(integer) 1
Заметили, что "1" в конце? У тебя есть слушатель! Как по волшебству, в вашем терминале SUBSCRIBE-d:
1) "message"
2) "myradioshow"
3) "Next caller gets a free loaf of bread!"
Конечно, на самом деле вы, вероятно, захотите делать что-то более полезное, чем рассказывать своим клиентам о своем образе жизни без штанов, например запускать события на своем сервере или выполнять какие-то задачи/работы. Хотя может и нет! :)