Lưu trữ dữ liệu
Pub / Sub là một nền tảng Nhà xuất bản / Người đăng ký, nó không phải là nền tảng lưu trữ dữ liệu. Tin nhắn đã xuất bản biến mất, bất kể có bất kỳ người đăng ký nào hay không.
Trong Redis Streams, stream là một kiểu dữ liệu, một cấu trúc dữ liệu theo đúng nghĩa của nó. Tin nhắn hoặc mục nhập được lưu trữ trong bộ nhớ và ở đó cho đến khi có lệnh xóa.
Giao tiếp đồng bộ / Không đồng bộ (Đẩy / Kéo)
Pub / Sub là giao tiếp đồng bộ ( push giao thức). Tất cả các bên cần phải hoạt động cùng một lúc để có thể giao tiếp. Đây Redis là một nhà môi giới nhắn tin đồng bộ thuần túy.
Redis Streams cho phép cả đồng bộ (XREAD
với BLOCK
và $
đặc biệt ID là một lần đẩy giao thức) và giao tiếp không đồng bộ (XREAD
thông thường là một kéo giao thức). XREAD
với BLOCK
giống như Pub / Sub, nhưng với khả năng tiếp tục khi ngắt kết nối mà không làm mất tin nhắn.
Ngữ nghĩa chuyển giao
Pub / Sub là Nhiều nhất một lần, tức là "cháy và quên".
Redis Streams cho phép cả Nhiều nhất một lần hoặc Ít nhất một lần (xác nhận rõ ràng được gửi bởi người nhận)
Chế độ chặn dành cho người tiêu dùng
Pub / Sub chỉ ở chế độ chặn. Sau khi đã đăng ký một kênh, khách hàng sẽ được chuyển sang chế độ người đăng ký và không thể ra lệnh (ngoại trừ [P]SUBSCRIBE
, [P]UNSUBSCRIBE
, PING
và QUIT
), nó đã trở thành chỉ đọc.
Redis Streams cho phép người tiêu dùng đọc tin nhắn ở chế độ chặn hoặc không.
Quạt gió
Pub / Sub chỉ dành cho người hâm mộ. Tất cả các khách hàng đang hoạt động đều nhận được tất cả các tin nhắn.
Redis Streams cho phép quạt ra (với XREAD
), mà còn để cung cấp một tập hợp con các thông báo khác nhau từ cùng một luồng cho nhiều máy khách. Điều này cho phép mở rộng quy mô xử lý tin nhắn, bằng cách định tuyến các tin nhắn khác nhau đến các nhân viên khác nhau, theo cách không thể có cùng một thông điệp được gửi đến nhiều người tiêu dùng. Kịch bản cuối cùng này đạt được với nhóm người tiêu dùng .
Redis Streams cung cấp nhiều tính năng hơn, như tem thời gian, cặp giá trị trường, phạm vi, v.v. Điều đó không có nghĩa là bạn nên luôn sử dụng Stream. Nếu trường hợp sử dụng của bạn có thể đạt được với Pub / Sub, thì tốt hơn hết là bạn nên sử dụng Pub / Sub. Với Luồng, bạn phải quan tâm đến việc sử dụng bộ nhớ.