Ai đó hỏi tôi PubSub là gì và cách tạo kênh (trong nhận xét từ my answer) và tôi chỉ cho anh ấy bài viết về redis.io =>http://redis.io/topics/pubsub. Tôi nghĩ rằng nó là khá rõ ràng, nhưng tôi tự hỏi nếu ai đó có một lời giải thích tốt hơn. Lý tưởng nhất, mô tả rõ ràng bằng cách sử dụng redis-cli
.Redis pubsub là gì và tôi sử dụng nó như thế nào?
Trả lời
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. Getattr() chính xác là gì và tôi sử dụng nó như thế nào?
- 2. Pyximport là gì và tôi nên sử dụng nó như thế nào?
- 3. couchdb là gì, tôi nên sử dụng nó như thế nào?
- 4. Func là gì, như thế nào và khi nào nó được sử dụng
- 5. [cmdletbinding()] là gì và nó hoạt động như thế nào?
- 6. GenericParameterHelper là gì và được sử dụng như thế nào?
- 7. Cụm từ thông dụng MM/DD/YYYY là gì và tôi sử dụng nó như thế nào trong php?
- 8. C# - Thành phần là gì và nó thường được sử dụng như thế nào?
- 9. Biểu tượng SQL # có nghĩa là gì và nó được sử dụng như thế nào?
- 10. ViewState trong JSF là gì và nó được sử dụng như thế nào?
- 11. Dấu thời gian SSMA. Nó là gì, nó được sử dụng như thế nào?
- 12. Yếu tố el/là gì? Làm thế nào để tôi sử dụng nó? Và tại sao?
- 13. Redis được sử dụng như thế nào ở Trello?
- 14. Tệp IOR là gì, nó hoạt động như thế nào và nó hoạt động như thế nào?
- 15. Tôi nên sử dụng Redis làm bộ nhớ cache cho SQL Server như thế nào?
- 16. Tôi nên lưu trữ JSON bằng redis như thế nào?
- 17. Thẻ meta viewport được sử dụng như thế nào và nó hoạt động như thế nào?
- 18. "Ném" làm gì và nó hữu ích như thế nào?
- 19. Chính xác thì streambuf là gì? Làm thế nào để tôi sử dụng nó?
- 20. Tôi sử dụng TLBIMP.EXE như thế nào?
- 21. Mạch ngắn là gì và nó được sử dụng như thế nào khi lập trình bằng Java?
- 22. Chỉ mục toàn văn là gì và khi nào tôi nên sử dụng nó?
- 23. __declspec là gì và khi nào tôi cần sử dụng?
- 24. Làm thế nào để khai báo std :: unique_ptr và việc sử dụng nó là gì?
- 25. Sự khác biệt giữa JApplet và Applet là gì và tôi nên sử dụng nó?
- 26. Độ phức tạp của thời gian A * là gì và nó bắt nguồn như thế nào?
- 27. Chức năng xử lý là gì và nó hữu ích như thế nào?
- 28. Trong Ruby "=>" có nghĩa là gì và nó hoạt động như thế nào?
- 29. "chế độ nghiêm ngặt" là gì và được sử dụng như thế nào?
- 30. Điều này có nghĩa là gì và nó trợ giúp như thế nào?
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
Đó 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). –
@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