Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

Redis Pub/Sub: สร้าง Message Broker ที่ขยายได้ ด้วย Redis

ในบทเรียนนี้ เราจะเรียนรู้วิธีการใช้ Redis datastore เป็นระบบ messaging แบบ publish/subscribe

ระบบ Redis Pub/Sub

Redis นำรูปแบบ messaging paradigm Publish/Subcribe มาใช้ ตามรูปแบบนี้ ผู้ส่ง (publisher) ของข้อความไม่ได้เขียนโปรแกรมเพื่อส่งข้อความโดยตรงไปยังผู้รับ (subscriber) พวกเขาส่ง (publish) ข้อความไปยัง channel เฉพาะ โดยไม่ทราบว่ามีผู้รับ (subscriber) ใดจะรับประทานข้อความหรือไม่ ผู้รับ (subscriber) ที่ต้องการรับประทานข้อความจะแสดงความสนใจโดยการสมัครรับ (subscribe) จาก channel หนึ่งหรือหลายรายการ และจะได้รับข้อความที่เผยแพร่ไปยัง channel เหล่านั้นเท่านั้น โดยไม่ทราบว่าผู้ส่ง (publisher) ใดเป็นผู้ส่งข้อความ

Redis Pub/Sub: สร้าง Message Broker ที่ขยายได้ ด้วย Redis

ในภาษา Redis ผู้ส่งข้อความเรียกว่า Publisher เพราะเผยแพร่ข้อความไปยัง channel และผู้รับข้อความเรียกว่า Subscriber เพราะสมัครรับจาก channel หนึ่งหรือหลายรายการเพื่อรับประทานข้อความ ข้อความสามารถมีข้อมูลทุกประเภทได้ อาจเป็นข้อความข้อความธรรมดา หรือข้อมูลเกี่ยวกับงาน (task) Subscriber สามารถสมัครรับจาก channel ได้ไม่จำกัดจำนวน และ Publisher สามารถเผยแพร่ข้อความไปยัง channel ใดก็ได้

การแยกความผูกพัน (decoupling) ระหว่าง publisher และ subscriber ทำให้ระบบมีความสามารถในการขยาย (scalability) และความยืดหยุ่น (flexibility)

Redis Pub/Sub ไม่มีความเกี่ยวข้องกับ Redis Key-Value database ไม่รบกวนกันในทุกระดับ รวมถึง database number ดังนั้น เช่น ถ้า publisher เผยแพร่ข้อความบน db index 10 subscriber บน db index 1 ก็จะรับข้อความได้

คำสั่ง Redis Pub/Sub

คำสั่งสำคัญทั้งหมดที่เกี่ยวข้องกับ Redis pub/sub มีดังนี้:

S.No Command Description
1 PSUBSCRIBE สมัครรับจาก channel หนึ่งหรือหลายรายการที่ตรงกับ pattern ที่กำหนด
2 PUBSUB แสดงสถานะของระบบ Pub/Sub
3 PUBLISH เผยแพร่ข้อความไปยัง channel เฉพาะ
4 PUNSUBSCRIBE ยกเลิกการสมัครรับจาก channel หนึ่งหรือหลายรายการที่ตรงกับ pattern
5 SUBSCRIBE สมัครรับจาก channel หนึ่งหรือหลายรายการ
6 UNSUBSCRIBE ยกเลิกการสมัครรับจาก channel หนึ่งหรือหลายรายการ

ตัวอย่าง

ในตัวอย่างนี้ เราจะใช้ redis-cli 3 instance เพื่อสาธาระระบบ Redis pub/sub โดย client หนึ่งสมัครรับจาก channel C1 และ C2 และอีกสอง client เผยแพร่ข้อความไปยัง channel C1 และ C2 ตามลำดับ

1. Client แรกสมัครรับจาก channel C1 และ C2

Redis Pub/Sub: สร้าง Message Broker ที่ขยายได้ ด้วย Redis

2. Client ที่สองเผยแพร่ข้อความ Hello ไปยัง channel C1

Redis Pub/Sub: สร้าง Message Broker ที่ขยายได้ ด้วย Redis

3. Client ที่สามเผยแพร่ข้อความ World ไปยัง channel C2

Redis Pub/Sub: สร้าง Message Broker ที่ขยายได้ ด้วย Redis

4. Client แรกแสดงข้อความที่ถูก push มาจาก channel C1 และ C2

Redis Pub/Sub: สร้าง Message Broker ที่ขยายได้ ด้วย Redis

อ้างอิง

  1. Pub Sub Command Docs

หากชอบบทเรียนนี้ กรุณาแบ่งปันความคิดเห็นและแชร์ให้ผู้อื่นด้วยครับ

Next -> Redis Pub Sub example using jedis library