2011-06-26 28 views

Trả lời

74

Xuất bản/đăng ký là một mô hình khá đơn giản. Hãy suy nghĩ về nó giống như bạn đang chạy một talk show trên một đài phát thanh. Đó là PUBLISH. Bạn hy vọng ít nhất một hoặc nhiều người sẽ đón kênh của bạn để nghe tin nhắn của bạn trên chương trình phát thanh (SUBSCRIBE) và thậm chí có thể làm một số nội dung, nhưng bạn không nói chuyện với folks trực tiếp.

Hãy cùng vui chơi với 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 

Lưu ý rằng không có khách hàng nào nhận được thông báo trên kênh "myradioshow" của bạn (đó là số 0 trong phản hồi). Không ai nghe. Bây giờ, mở thêm redis-cli (hoặc cho lần nhiều niềm vui có một người bạn mở ra họ redis-cli và kết nối với máy chủ của bạn) và đăng ký kênh:

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

Quay trở lại ban đầu redis-cli của bạn và tiếp tục chương trình của bạn:

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

Lưu ý rằng "1" ở cuối? Bạn có một người nghe! Giống như ma thuật, trong Theo dõi-d thiết bị đầu cuối của bạn:

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

Tất nhiên, trong thực tế, bạn có thể sẽ muốn làm những thứ đó là hữu ích hơn nói khách hàng của bạn về lối sống quần-less của bạn, chẳng hạn như bắn sự kiện trên máy chủ của bạn hoặc chạy một số loại công việc/công việc. Có lẽ không phải vậy! :)

+1

Tại sao người đăng ký nhận được "đăng ký" và "myradioshow" dưới dạng tin nhắn thay vì "Chào mọi người!" v.v. – bcoughlan

+4

Đó chỉ là thông báo xác nhận từ Redis dưới dạng một phản hồi hàng loạt, cho bạn biết nó đã làm gì và những gì nó đã đăng ký, và 1 cho thấy một phản ứng thành công. Xem tại đây: http://redis.io/commands/subscribe. Trong ví dụ của tôi, SUBSCRIBE xảy ra sau khi các tin nhắn ban đầu được xuất bản, vì vậy họ không nhận được "Chào mọi người!" v.v. vì những tin nhắn đó đã biến mất. Nói cách khác, SUBSCRIBE chỉ nhận các tin nhắn được xuất bản được xuất bản _after_ đăng ký (vì vậy nói cách khác, nó không phải là một hàng đợi). –

+0

@AashayDesai một trường hợp phổ biến khi người ta muốn/cần sử dụng xuất bản và đăng ký sẽ hữu ích – kentor

Các vấn đề liên quan