Redis Pub/Sub – Cơ chế hoạt động – Cài đặt trên Windows

Sharing is caring!

Chào các bạn. Đó giờ làm laravel, thấy cái thằng Redis chỉ được dùng làm cache nên cũng không quan tâm lắm, chỉ biết nó là dạng memory-database và lưu dữ liệu dạng key-value, hết. Hôm nay, tui lò mò tìm hiểu thì thấy Redis nó còn có một cơ chế gọi là Pub/Sub dùng để làm mấy cái ứng dụng realtime, cũng khá hay nha các bạn, nó giống như là thằng Kafka vậy dùng để làm message delivery tương tự như bài Xây dựng một Realtime Dashboard sử dụng Spark Streaming, Kafka, Nodejs và MongoDB. Bài hôm nay, chủ yếu hướng dẫn các bạn cài Redis trên Windows cũng như xem cái cơ chế Pub/Sub nó ra sau ha.

1. Cài đặt Redis trên Windows:

Nếu vào trang redis.io, các bạn không thấy cái mục download cho windows đâu, hình như là từ version 4.0, nó không còn hổ trợ cho Windows nữa hay sau đó. Nhưng không sau, các bạn vào link sau để tải về nhá: https://github.com/MicrosoftArchive/redis/releases

Chọn version là 3.2.100 (64 bit nhé), và download cái file zip như hình sau:

download xong, các bạn unzip nó ra thư mục nào cũng được, trong bài này tui unzip nó ra thư mục E:\Server\redis\3.2.100, như sau:

Các bạn chú ý 2 cái file: redis-server.exeredis-cli.exe, lát mình sẽ chạy 2 file này để làm demo.

2. Cơ chế Pub/Sub:

  • Pub: Publish, có nghĩa là một producer đẩy dữ liệu vào một channel (kênh) hay còn gọi là topic như trong Kafka
  • Sub: Subscribe có nghĩa là một consumer đăng ký nhận dữ liệu từ một channel hay topic.

Hiểu đơn giản tí, giống như xem truyền hình cáp vậy (ví dụ như SCTV), chúng ta là các consumer, đăng ký (subscribe) vào các kênh như: VTV1, VTV3, VTV6, HBO, Fox Movies…. thì SCTV chính là một producer, đẩy dữ liệu (publish) ra các kênh tương ứng đó và chúng ta chỉ nhận và xem trên TV thôi.

Như hình trên, một subscriber có thể đăng ký nhận data từ nhiều kênh nha các bạn.

3. Demo cơ chế Pub/Sub của Redis:

Do demo chỉ làm trên console, cho nên tui giả sử các bạn đều chuyển về ngay thư mục của Redis (cái thư mục mà unzip hồi nảy), như trong bài thì tui chuyển về thư mục E:\Server\redis\3.2.100 này hết nha.

Mở cmd đầu tiên lên và chạy lệnh:

Nếu nó ra như thế này có nghĩa là Redis Server đã run:

Chú ý: mặc định thì Redis nó listen ở port 6379. Để change thành port 7777, các bạn thêm tham số –port như sau:

Tiếp theo, mở 3 cái cmd lên, chạy cùng một lệnh:

Chúng ta quy định như hình trên nha, 1 PUBLISHER và 2 SUBSCRIBER

ở SUBCRIBER 1, các bạn đăng ký 2 kênh là channel-a và channel-b bằng lệnh subscribe:

ở SUBSCRIBER 2, các bạn đăng ký 1 kênh là channel-a

sau đó, ở PUBLISHER, các bạn phát một message là “Welcome to Channel A” ở channel-a bằng lệnh publish:

thì lập tức ở SUBSCRIBE 1 và SUBSCRIBE 2 sẽ hiện ra đoạn text trên:

Nếu bây giờ, ở PUBLISHER, các bạn phát một message “Welcome to Channel B” ở channel-b:

thì các bạn chỉ thấy SUBSCRIBER 1 nhận cái message đó thôi.

Đấy là cơ chế Pub/Sub của Redis, sau này có thời gian, tui sẽ làm một bài về việc dùng Redis Pub/Sub này kết hợp với Laravel Broadcasting cùng với socket.io để làm cái ứng dụng send message nho nhỏ. Vậy nhé, hẹn gặp lại.

Sharing is caring!

Tạo Authentication cho module Backend và Frontend trong Laravel 5
Tạo module Backend, Frontend và Api với Laravel 5.7 (version 2)

Vincent Le

Tui là Lê Minh Đạt, tên tiếng anh là Vincent(do thích nhân vật Vincent Valentine, ai từng là fan của trò Final Fantasy VII thì sẽ biết nhân vật này, hehe). Đang tập tành làm một blogger viết về mảng lập trình, mong muốn được chia sẻ những gì đã học được, tích góp được trong 10 năm đi làm thợ code.

shares