Redis Pub/Sub ใช้ระบบการส่งข้อความแบบเรียลไทม์ซึ่งผู้เผยแพร่เผยแพร่ไปยังช่อง/หัวข้อและลูกค้าหลายรายสามารถสมัครสมาชิกช่อง/หัวข้อนั้นได้

Redis Pub Sub

ในบทช่วยสอนครั้งสุดท้ายของเรา“ คู่มือผู้เริ่มต้นสำหรับฐานข้อมูลในหน่วยความจำ Redis ” เราได้เรียนรู้เกี่ยวกับ Redis เป็นฐานข้อมูลในหน่วยความจำ และวิธีการแข่งขันกับฐานข้อมูล NOSQL นอกจากนี้เรายังได้เรียนรู้ว่าจะใช้ Redis ที่ไหนและการใช้งานนั้นไม่เหมาะสม ตอนนี้การสร้างบนฐานความรู้นั้นในบทช่วยสอนนี้เราจะได้เรียนรู้เกี่ยวกับ Redis Pub/Sub มันทำงานอย่างไรและการใช้งานที่ดีที่สุดของระบบ Redis Publish/สมัครสมาชิก มาเริ่มกันเลย.

รูปแบบการเผยแพร่/สมัครสมาชิกคืออะไร?

เผยแพร่/สมัครสมาชิกหรือใน Pub/Sub สั้น ๆ เป็นรูปแบบการส่งข้อความที่ผู้ส่งและผู้รับข้อความไม่แลกเปลี่ยนข้อความเหล่านั้นโดยตรง ค่อนข้างผู้ส่งข้อความเผยแพร่ไปยังช่อง/หัวข้อ และทุกคนที่ต้องการรับข้อความเหล่านั้นจะสมัครสมาชิกช่อง/หัวข้อ นั่นเป็นคำอธิบายทางเทคนิคมากกว่า ในชีวิตประจำวันของเราเราใช้โมเดล Publish-Subscribe บ่อยครั้งในขณะที่ใช้แพลตฟอร์มโซเชียลมีเดียเช่น YouTube, Twitter, Facebook หรือ Instagram ในกรณีที่ผู้ผลิตเนื้อหาผลิตเนื้อหาและผู้ที่สนใจจะติดตาม / สมัครรับเนื้อหา ดังนั้นนี่คือสิ่งที่ผับ/รูปแบบย่อยทำในสถาปัตยกรรมซอฟต์แวร์เช่นกัน

ผับ/ย่อยทำงานอย่างไร?

ในการพัฒนาซอฟต์แวร์เน้นการใช้ซ้ำได้สูงมาก และรูปแบบการออกแบบทั้งหมดจะขึ้นอยู่กับการสร้างส่วนประกอบหรือโมดูลที่นำกลับมาใช้ใหม่ได้ ดังนั้นเพื่อให้เข้าใจผับ/ย่อยคุณต้องดูว่าแนวคิดนี้มาจากไหนและนักพัฒนาพบว่ามันเป็นรูปแบบได้อย่างไร ในขณะที่สถาปัตยกรรมซอฟต์แวร์พัฒนาขึ้นและใช้โมดูลมากขึ้นพวกเขาก็กลายเป็นการสื่อสาร / การส่งข้อความมากขึ้นเพิ่มขึ้นระหว่างโมดูลและส่วนประกอบ เช่นคิดว่าโมดูลเป็นหน่วยประมวลผลที่ใช้อินพุตและให้เอาต์พุตบางอย่าง และแต่ละอินพุตเป็นข้อความที่หน่วยประมวลผลกระบวนการและสร้างข้อความอื่นเป็นเอาต์พุต ซึ่งจะเป็นอินพุตไปยังโมดูลอื่น ๆ ดังนั้นการเพิ่มขึ้นของการส่งข้อความจึงต้องให้ความสนใจเป็นพิเศษเพื่อให้มีแอปพลิเคชันที่ปรับขนาดได้มีข้อกำหนดที่โมดูลและส่วนประกอบสามารถทำงานได้อย่างอิสระโดยไม่ต้องพึ่งพา ดังนั้นรูปแบบการเผยแพร่/สมัครสมาชิกมา ในหลายระบบผับ/ย่อยผู้เผยแพร่โพสต์ข้อความไปยังนายหน้าข้อความตัวกลางหรือบัสอีเวนต์และสมาชิกลงทะเบียนการสมัครสมาชิกกับนายหน้ารายนั้นปล่อยให้นายหน้าทำการกรอง โดยปกติแล้วนายหน้าจะทำหน้าที่จัดเก็บและไปข้างหน้าเพื่อกำหนดเส้นทางข้อความจากผู้เผยแพร่ไปยังสมาชิก นอกจากนี้นายหน้าอาจจัดลำดับความสำคัญของข้อความในคิวก่อนกำหนดเส้นทาง

คุณควรใช้ Pub/Sub เมื่อใด

แอปพลิเคชันแชทเป็นกรณีการใช้งานแบบคลาสสิกของรูปแบบผับ/ย่อย ในแอปพลิเคชันแชทผู้เข้าร่วมสามารถสมัครสมาชิกห้องสนทนาที่มีหัวข้อผับ/ย่อยที่กำหนด เมื่อผู้ใช้ส่งข้อความไปยังห้องแชทอินสแตนซ์แอพแชทของเธอจะเผยแพร่ข้อความในหัวข้อของห้องสนทนานั้น สมาชิกของหัวข้อรับข้อความ บริการคิวข้อความ / การเข้าคิวข้อความหรือแอปพลิเคชันการประมวลผลแบบแบตช์สามารถใช้รูปแบบผับ / ย่อยได้ ในกรณีที่ทุกคนที่ต้องการงานเฉพาะที่ทำจะเผยแพร่ข้อความไปยังคิวและหน่วยประมวลผลที่สมัครเข้าคิวนั้นจะได้รับข้อความเพื่อประมวลผลงาน ให้หารือเกี่ยวกับข้อดีบางอย่างของรูปแบบผับ/ย่อย

  • การมีเพศสัมพันธ์แบบหลวมระหว่างส่วนประกอบของระบบ
  • มุมมองที่ดีขึ้นของเวิร์กโฟลว์ทั่วทั้งระบบ
  • ช่วยให้การรวมที่ดีขึ้นและเร็วขึ้น
  • ทำให้มั่นใจได้ถึงความยืดหยุ่นที่ราบรื่นขึ้น
  • รับประกันความน่าเชื่อถือที่สอดคล้องกัน
  • สร้างความยืดหยุ่น
  • ซอฟต์แวร์แบบแยกส่วน
  • การพัฒนาซอฟต์แวร์ Agnostic Language
  • ความชัดเจนในตรรกะทางธุรกิจ
  • ปรับปรุงการตอบสนอง

วิธีใช้ Redis Pub/Sub

สำหรับการติดตั้ง Redis คุณสามารถอ้างถึง [การสอนสุดท้าย] ของฉัน 1 ตัวอย่างนี้อธิบายว่าแนวคิดของผู้เผยแพร่และสมาชิกทำงานอย่างไร ในตัวอย่างต่อไปนี้ไคลเอนต์หนึ่งสมัครสมาชิกช่องชื่อ ‘Redischat’

redis 127.0.0.1:6379> SUBSCRIBE redisChat  
Reading messages... (press Ctrl-C to quit) 
1) "subscribe" 
2) "redisChat" 
3) (integer) 1 

ตอนนี้ลูกค้าสองรายกำลังเผยแพร่ข้อความในช่องสัญญาณเดียวกันชื่อ ‘Redischat’ และไคลเอนต์ที่สมัครไว้ข้างต้นกำลังรับข้อความ

redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great"  
(integer) 1  
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis"  
(integer) 1   
1) "message" 
2) "redisChat" 
3) "Redis is a great" 
1) "message" 
2) "redisChat" 
3) "Learn redis" 

บทสรุป

ในบทช่วยสอนนี้เราได้เรียนรู้เกี่ยวกับรูปแบบการออกแบบการเผยแพร่/สมัครสมาชิก และสำรวจว่า Redis Pub/Sub ทำงานอย่างไร นอกจากนี้เรายังสำรวจว่ากรณีที่ดีที่สุดของ Redis Pub/Sub, การส่งข้อความแบบเรียลไทม์คืออะไร ในบทช่วยสอนที่กำลังจะมาถึงเราจะสำรวจ Redis เพิ่มเติมและอธิบายว่าเราสามารถใช้ Redis Pub/Sub กับ Node.js เพื่อสร้างแอปพลิเคชันแชทแบบเรียลไทม์ได้อย่างไร