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

Redis PSUBSCRIBE: สมัครรับข้อความจากหลาย Pattern แบบ Glob-Style

ในบทเรียนนี้ เราจะเรียนรู้วิธีการสมัครรับข้อความ (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

  1. * wildcard: ตรงกับศูนย์หรือหลายตัวอักษรรวมทั้ง space เช่น foo* ตรงกับ fooccc, foo, fooq
  2. ? wildcard: ตรงกับตัวอักษรเดียวรวมทั้ง space เช่น f?0 ตรงกับ fao, fbo, fco
  3. [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 มีลักษณะดังนี้:

  1. psubscribe (3 elements): หมายถึงสมัครรับ pattern ที่เป็นองค์ประกอบที่สองสำเร็จ องค์ประกอบที่สามแสดงจำนวน pattern ที่สมัครรับอยู่
  2. pmessage (4 elements): เป็นข้อความที่รับมาจากคำสั่ง PUBLISH ของ client อื่น องค์ประกอบที่สองคือ pattern ต้นฉบับที่ตรงกัน องค์ประกอบที่สามคือชื่อ channel ต้นทาง และองค์ประกอบที่สี่คือข้อความจริง (payload)

ตัวอย่าง

Redis PSUBSCRIBE: สมัครรับข้อความจากหลาย Pattern แบบ Glob-Style

อ้างอิง

  1. PSUBSCRIBE Command Docs

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