ในบทเรียนนี้ เราจะเรียนรู้วิธีการสมัครรับข้อความ (subscribe) จาก pattern หลายรายการในระบบ message broker ของ Redis โดยใช้ redis-cli
คำสั่ง PSUBSCRIBE
คำสั่ง PSUBSCRIBE ใช้สำหรับสมัครรับข้อความของ client จาก pattern หนึ่งหรือหลายรายการ เพื่อรับข้อความทั้งหมดที่เผยแพร่ (publish) ไปยัง channel ที่ชื่อตรงกับ pattern ที่ระบุ Pattern ถูกระบุในรูปแบบ glob-style คล้ายกับคำสั่ง SUBSCRIBE เมื่อ client รันคำสั่ง psubscribe จะเข้าสู่สถานะ subscribed ซึ่งจะรอฟัง pattern ที่สมัครไว้ ข้อความที่เผยแพร่โดย client อื่นไปยัง channel ที่ชื่อตรงกับ pattern ที่สมัครไว้จะถูก push โดย Redis ไปยัง client
เมื่อ client อยู่ในสถานะ subscribed จะไม่ควรรันคำสั่งอื่น ยกเว้น SUBSCRIBE, PSUBSCRIBE, UNSUBSCRIBE, PUNSUBSCRIBE, PING และ QUIT เท่านั้น ใน redis-cli เมื่อ client อยู่ในสถานะ subscribed จะไม่รับคำสั่งอื่น และสามารถออกจากสถานะได้เฉพาะด้วย Ctrl + C
Glob-Style Patterns
- * wildcard: ตรงกับศูนย์หรือหลายตัวอักษรรวมทั้ง space เช่น foo* ตรงกับ fooccc, foo, fooq
- ? wildcard: ตรงกับตัวอักษรเดียวรวมทั้ง space เช่น f?0 ตรงกับ fao, fbo, fco
- [list] wildcard: ตรงกับตัวอักษรเดียวจากรายการ เช่น f[abc]0 ตรงกับ fao, fbo, fco
ใช้ \ เพื่อ escape ตัวอักษรพิเศษ
Syntax
redis host:port> PSUBSCRIBE <pattern> [<pattern> ...]
Output
- (array) reply of 3 elements: เมื่อรันคำสั่ง PSUBSCRIBE - (array) reply of 4 elements: เมื่อ client รับข้อความ
รูปแบบข้อความที่ส่งมา (Pushed Message)
องค์ประกอบแรกของ array reply มีลักษณะดังนี้:
- psubscribe (3 elements): หมายถึงสมัครรับ pattern ที่เป็นองค์ประกอบที่สองสำเร็จ องค์ประกอบที่สามแสดงจำนวน pattern ที่สมัครรับอยู่
- pmessage (4 elements): เป็นข้อความที่รับมาจากคำสั่ง PUBLISH ของ client อื่น องค์ประกอบที่สองคือ pattern ต้นฉบับที่ตรงกัน องค์ประกอบที่สามคือชื่อ channel ต้นทาง และองค์ประกอบที่สี่คือข้อความจริง (payload)
ตัวอย่าง

อ้างอิง
- PSUBSCRIBE Command Docs
ขอจบบทเรียนสำหรับวิธีสมัครรับข้อความจาก pattern หนึ่งหรือหลายรายการใน Redis message broker โดยใช้ redis-cli หากชอบบทเรียนนี้ กรุณาแบ่งปันความคิดเห็นและแชร์ให้ผู้อื่นด้วยครับ