Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Sự khác biệt chính giữa Redis Pub / Sub và Redis Stream là gì?

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$ đặ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 , PINGQUIT ), 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ớ.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khắc phục sự cố Quyền bị từ chối khi cố gắng kết nối với Redis từ tập lệnh PHP

  2. Làm cách nào để chạy Redis trên Windows 32 bit?

  3. Cấu hình triển khai Redis - sao chép chủ nô lệ

  4. Nhiều phím trỏ đến một giá trị duy nhất trong Redis (Cache) với java

  5. Làm cách nào để giữ has_many:thông qua các mối quan hệ khi tuần tự hóa thành JSON và trở lại trong Rails 4.0.3?