Skip to main content

Command Palette

Search for a command to run...

Bài 10: Redis Pub/Sub

Published
4 min readView as Markdown

Giới thiệu về Pub/Sub trong Redis:

  • Pub/Sub (Publish/Subscribe) là gì?

    • Pub/Sub là một mô hình nhắn tin (messaging pattern) cho phép các ứng dụng gửi và nhận thông báo theo cách không đồng bộ. Trong mô hình này, một ứng dụng (publisher) có thể gửi thông báo mà không cần biết ai sẽ nhận nó, và một hoặc nhiều ứng dụng khác (subscribers) có thể nhận thông báo mà không cần biết nguồn gửi là ai.
  • Lợi ích của Pub/Sub:

    • Giảm sự phụ thuộc giữa các thành phần trong hệ thống.

    • Tăng tính linh hoạt và khả năng mở rộng.

    • Hỗ trợ giao tiếp không đồng bộ giữa các dịch vụ.

Các lệnh cơ bản:

1. PUBLISH:

  • Mô tả:

    • Lệnh PUBLISH dùng để gửi một thông báo đến tất cả các subscribers đang lắng nghe trên một kênh (channel) cụ thể.
  • Cú pháp:

      PUBLISH channel message
    
  • Ví dụ:

      PUBLISH news "Breaking News: New Redis Version Released!"
    
    • Lệnh này gửi thông báo "Breaking News: New Redis Version Released!" đến tất cả các subscribers đang lắng nghe trên kênh news.

2. SUBSCRIBE:

  • Mô tả:

    • Lệnh SUBSCRIBE dùng để đăng ký lắng nghe một hoặc nhiều kênh. Khi có thông báo mới được gửi đến kênh này, subscriber sẽ nhận được thông báo đó.
  • Cú pháp:

      SUBSCRIBE channel [channel ...]
    
  • Ví dụ:

      SUBSCRIBE news sports
    
    • Lệnh này đăng ký lắng nghe các kênh newssports.

3. UNSUBSCRIBE:

  • Mô tả:

    • Lệnh UNSUBSCRIBE dùng để hủy đăng ký lắng nghe một hoặc nhiều kênh. Nếu không chỉ định kênh nào, subscriber sẽ hủy đăng ký tất cả các kênh đang lắng nghe.
  • Cú pháp:

      UNSUBSCRIBE [channel ...]
    
  • Ví dụ:

      UNSUBSCRIBE news
    
    • Lệnh này hủy đăng ký lắng nghe kênh news.

4. PSUBSCRIBE:

  • Mô tả:

    • Lệnh PSUBSCRIBE dùng để đăng ký lắng nghe các kênh khớp với một mẫu (pattern). Khi có thông báo mới được gửi đến bất kỳ kênh nào khớp với mẫu này, subscriber sẽ nhận được thông báo đó.
  • Cú pháp:

      PSUBSCRIBE pattern [pattern ...]
    
  • Ví dụ:

      PSUBSCRIBE news.*
    
    • Lệnh này đăng ký lắng nghe tất cả các kênh bắt đầu bằng news..

5. PUNSUBSCRIBE:

  • Mô tả:

    • Lệnh PUNSUBSCRIBE dùng để hủy đăng ký lắng nghe các kênh khớp với một mẫu. Nếu không chỉ định mẫu nào, subscriber sẽ hủy đăng ký tất cả các mẫu đang lắng nghe.
  • Cú pháp:

      PUNSUBSCRIBE [pattern ...]
    
  • Ví dụ:

      PUNSUBSCRIBE news.*
    
    • Lệnh này hủy đăng ký lắng nghe tất cả các kênh bắt đầu bằng news..

Ví dụ thực tiễn:

Sử dụng Pub/Sub để xây dựng hệ thống thông báo thời gian thực:

  • Scenario: Bạn đang phát triển một ứng dụng tin tức và cần gửi thông báo thời gian thực đến các người dùng khi có bài viết mới.

  • Bước 1: Publisher gửi thông báo về bài viết mới:

      PUBLISH news "New article published: Redis Pub/Sub Explained!"
    
  • Bước 2: Subscriber đăng ký lắng nghe kênh tin tức:

      SUBSCRIBE news
    
    • Mỗi khi có thông báo mới được gửi đến kênh news, subscriber sẽ nhận được thông báo đó.
  • Bước 3: Publisher gửi thông báo về một loại bài viết cụ thể:

      PUBLISH news.technology "New tech article published: Redis Streams!"
    
  • Bước 4: Subscriber đăng ký lắng nghe các kênh tin tức công nghệ:

      PSUBSCRIBE news.technology.*
    
    • Mỗi khi có thông báo mới được gửi đến các kênh bắt đầu bằng news.technology., subscriber sẽ nhận được thông báo đó.

Các tính năng bổ sung của Pub/Sub:

6. Pattern Matching (Khớp mẫu):

  • Mô tả:

    • Redis hỗ trợ khớp mẫu khi đăng ký lắng nghe kênh. Bạn có thể sử dụng ký tự đại diện * để khớp với nhiều kênh cùng lúc.

7. Message Ordering (Thứ tự thông báo):

  • Mô tả:

    • Thông báo được gửi đến subscribers theo thứ tự mà chúng được nhận bởi Redis. Điều này đảm bảo rằng các thông báo được xử lý theo đúng thứ tự thời gian.

8. Scalability (Khả năng mở rộng):

  • Mô tả:

    • Redis Pub/Sub có thể được mở rộng để xử lý hàng nghìn kênh và hàng triệu thông báo mỗi giây. Điều này giúp hệ thống có thể mở rộng để đáp ứng nhu cầu cao.

Câu hỏi củng cố kiến thức:

  1. Lệnh nào dùng để gửi một thông báo đến tất cả các subscribers trên một kênh?

    • PUBLISH.
  2. Lệnh nào dùng để đăng ký lắng nghe một hoặc nhiều kênh?

    • SUBSCRIBE.
  3. Làm thế nào để hủy đăng ký lắng nghe một hoặc nhiều kênh?

    • Sử dụng lệnh UNSUBSCRIBE.
  4. Lệnh nào dùng để đăng ký lắng nghe các kênh khớp với một mẫu?

    • PSUBSCRIBE.
  5. Làm thế nào để hủy đăng ký lắng nghe các kênh khớp với một mẫu?

    • Sử dụng lệnh PUNSUBSCRIBE.

More from this blog

devngu

169 posts