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

Redis Jedis pub sub- วิธีติดตั้งระบบ pub/sub โดยใช้ jedis library

ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับวิธีการติดตั้งระบบย่อย redis pub โดยใช้ไลบรารี Jedis

ห้องสมุดเจดิส

Jedis เป็นไลบรารีไคลเอ็นต์ Java สำหรับที่เก็บข้อมูล Redis มันมีขนาดเล็กและใช้งานง่ายมาก และเข้ากันได้อย่างสมบูรณ์กับ redis 2.8.x, 3.x.x และที่เก็บข้อมูลด้านบน คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับห้องสมุดเจดิสได้ที่นี่

ระบบ Redis Pub/Sub

Redis ใช้กระบวนทัศน์การส่งข้อความ Publish/Subscribe ตามกระบวนทัศน์การส่งข้อความนี้ ผู้ส่ง ( Publisher ) ของข้อความไม่ได้รับการตั้งโปรแกรมให้ส่งข้อความโดยตรงไปยังผู้รับเฉพาะ ( Subscriber ) พวกเขาส่ง ( เผยแพร่ ) ข้อความของพวกเขาไปยังช่องทางเฉพาะ โดยไม่ทราบว่าผู้รับคนใดจะใช้ข้อความนั้นหรือไม่ ผู้รับที่ต้องการบริโภคข้อความแสดงความสนใจโดยสมัครรับข้อมูลจากช่องทางใดช่องทางหนึ่งหรือมากกว่า และพวกเขาจะได้รับข้อความที่เผยแพร่ไปยังช่องทางเหล่านั้นเท่านั้น โดยไม่ทราบว่าผู้ส่งรายใดเป็นผู้ส่งข้อความ คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับระบบ Redis Pub/Sub ได้ที่นี่

การตั้งค่าโครงการ

สร้างโปรเจ็กต์ maven อย่างง่ายใน IDE ที่คุณชื่นชอบและเพิ่มการพึ่งพาที่กล่าวถึงด้านล่างใน pom.xml ของคุณ ไฟล์.

  redis.clients  jedis  3.0.1

สำหรับไลบรารี jedis เวอร์ชันล่าสุด ตรวจสอบหน้านี้

การติดตั้ง Redis

คุณจะต้องติดตั้ง Redis เวอร์ชันล่าสุด ตรวจสอบหน้านี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้ง redis

การเชื่อมต่อของเจดิส

สร้างวัตถุของ เจดิส ( redis.clients.jedis.Jedis ) คลาสสำหรับเชื่อมต่อโค้ด java ของคุณกับ redis

Jedis jedis =เจดิสใหม่ ();

หากคุณได้เริ่มบริการ redis หนึ่งรายการในเครื่องของคุณ และบนพอร์ตเริ่มต้น (6379) คอนสตรัคเตอร์เริ่มต้นก็จะทำงานได้ดี มิฉะนั้น คุณต้องส่ง URL โฮสต์และหมายเลขพอร์ตที่ถูกต้อง เป็นอาร์กิวเมนต์ในตัวสร้าง

สมัครรับข้อมูลจากช่อง

สร้างชั้นเรียน “ChannelSubscribe” , คลาสนี้จะสมัครรับข้อมูลจากช่อง C1 และ C2 โดยการสร้างลูกค้า ลูกค้ารายนี้จะได้รับข้อความเมื่อลูกค้ารายอื่นเผยแพร่ข้อความไปยังช่อง C1 หรือช่อง C2

นำเข้า redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub; public class ChannelSubscribe { public void main (String[] args) { Jedis jedis =null; ลอง { /* การสร้างวัตถุ Jedis เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ redis */ jedis =new Jedis (); /* การสร้างวัตถุ JedisPubSub สำหรับสมัครสมาชิกกับช่อง */ JedisPubSub jedisPubSub =ใหม่ JedisPubSub () { @Override public void onMessage (ช่องสตริงข้อความสตริง) { System.out.println ("ช่อง" + ช่อง + " ได้ส่งข้อความ:" + ข้อความ ); if(channel.equals("C1")) { /* Unsubscribe from channel C1 หลังจากได้รับข้อความแรก */ ยกเลิกการสมัคร (ช่อง); } } @Override public void onSubscribe(String channel, int subscribedChannels) { System.out.println("Client is Subscribed to channel :"+ ช่อง); System.out.println("Client is Subscribed to "+ SubscribedChannels + " no. of channels"); } @Override public void onUnsubscribe(String channel, int subscribedChannels) { System.out.println("Client is Unsubscribed from channel :"+ ช่อง); System.out.println("Client is Subscribed to "+ SubscribedChannels + " no. of channels"); } }; /* สมัครสมาชิกช่อง C1 และ C2 */ jedis.subscribe(jedisPubSub, "C1", "C2"); } catch (ยกเว้นข้อยกเว้น) { System.out.println ("ข้อยกเว้น:" + ex.getMessage ()); } ในที่สุด { if(jedis !=null) { jedis.close(); } } }}

ผลลัพธ์

เมื่อคุณเปิดชั้นเรียน “ChannelSubscribe” , ผลลัพธ์จะเป็นดังนี้ :- 

Redis Jedis pub sub- วิธีติดตั้งระบบ pub/sub โดยใช้ jedis library




เผยแพร่ไปยังช่อง

สร้างชั้นเรียน “ChannelPublish” , คลาสนี้จะเชื่อมต่อกับเซิร์ฟเวอร์ redis โดยใช้การเชื่อมต่อ jedis และจะเผยแพร่สองข้อความไปยังช่อง C1 และ C2 ต่อช่อง

<ก่อน>นำเข้า redis.clients.jedis.Jedis;คลาสสาธารณะ ChannelPublish { โมฆะคงที่สาธารณะหลัก (สตริง [] args) { Jedis jedis =null; ลอง { /* การสร้างวัตถุ Jedis เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ redis */ jedis =new Jedis (); /* กำลังเผยแพร่ข้อความไปยังช่อง C1 */ jedis.publish("C1", "ข้อความแรกถึงช่อง C1"); /* กำลังเผยแพร่ข้อความไปยังช่อง C2 */ jedis.publish("C2", "ข้อความแรกถึงช่อง C2"); /* กำลังเผยแพร่ข้อความไปยังช่อง C1 */ jedis.publish("C1", "ข้อความที่สองไปยังช่อง C1"); /* กำลังเผยแพร่ข้อความไปยังช่อง C2 */ jedis.publish("C2", "ข้อความที่สองไปยังช่อง C2"); } catch (ยกเว้นข้อยกเว้น) { System.out.println ("ข้อยกเว้น:" + ex.getMessage ()); } ในที่สุด { if(jedis !=null) { jedis.close(); } } }}

ผลลัพธ์

เมื่อคุณเปิดชั้นเรียน “ChannelPublish” , เอาต์พุตใน ChannelSubscribe คอนโซลจะเป็นดังนี้ :- 

Redis Jedis pub sub- วิธีติดตั้งระบบ pub/sub โดยใช้ jedis library

สมัครสมาชิกรูปแบบ

สร้างชั้นเรียน “PatternSubscribe” , คลาสนี้จะสมัครใช้งานรูปแบบ C* และ D? ด้วยการสร้างลูกค้า

<ก่อนหน้า>นำเข้า redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub;Public class PatternSubscribe { โมฆะสาธารณะหลัก (String [] args) { Jedis jedis =null; ลอง { /* การสร้างวัตถุ Jedis เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ redis */ jedis =new Jedis (); /* การสร้างวัตถุ JedisPubSub สำหรับสมัครสมาชิกกับช่อง */ JedisPubSub jedisPubSub =ใหม่ JedisPubSub () { @Override public void onPMessage (รูปแบบสตริง ช่องสตริง ข้อความสตริง) { System.out.println ("ช่อง" + ช่อง + " ได้ส่ง ข้อความ :" +ข้อความ+ " ตามรูปแบบ " + รูปแบบ); if(pattern.equals("C*")) { /* Unsubscribe from pattern C* หลังจากได้รับข้อความแรก */ punsubscribe(แพทเทิร์น); } } @Override public void onPSubscribe(รูปแบบสตริง, int subscribedChannels) { System.out.println("ไคลเอ็นต์สมัครรับข้อมูลรูปแบบ:"+ รูปแบบ); System.out.println("Client is Subscribed to "+ SubscribedChannels + " no. of patterns"); } @Override public void onPUnsubscribe(รูปแบบสตริง, int subscribedChannels) { System.out.println("Client is Unsubscribed from pattern :"+ pattern); System.out.println("Client is Subscribed to "+ SubscribedChannels + " no. of patterns"); } }; /* สมัครสมาชิกช่อง C1 และ C2 */ jedis.psubscribe(jedisPubSub, "C*", "D?"); } catch (ยกเว้นข้อยกเว้น) { System.out.println ("ข้อยกเว้น:" + ex.getMessage ()); } ในที่สุด { if(jedis !=null) { jedis.close(); } } }}

ผลลัพธ์

เมื่อคุณเปิดชั้นเรียน “PatternSubscribe” , ผลลัพธ์จะเป็นดังนี้ :- 

Redis Jedis pub sub- วิธีติดตั้งระบบ pub/sub โดยใช้ jedis library




เผยแพร่ไปยังรูปแบบ

สร้างชั้นเรียน “PatternPublish” , คลาสนี้จะเชื่อมต่อกับเซิร์ฟเวอร์ redis โดยใช้การเชื่อมต่อ jedis และจะเผยแพร่ข้อความไปยังช่อง C13, D2, C134 และ D3

<ก่อน>นำเข้า redis.clients.jedis.Jedis;คลาสสาธารณะ PatternPublish { โมฆะคงที่สาธารณะหลัก (สตริง [] args) { เจดิสเจดิส =null; ลอง { /* การสร้างวัตถุ Jedis เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ redis */ jedis =new Jedis (); /* กำลังเผยแพร่ข้อความไปยังช่อง C13 */ jedis.publish("C13", "ข้อความไปยังช่อง C13"); /* กำลังเผยแพร่ข้อความไปยังช่อง D2 */ jedis.publish("D2", "ข้อความไปยังช่อง D2"); /* กำลังเผยแพร่ข้อความไปยังช่อง C134 */ jedis.publish("C134", "ข้อความไปยังช่อง C134"); /* กำลังเผยแพร่ข้อความไปยังช่อง D3 */ jedis.publish("D3", "ข้อความไปยังช่อง D3"); } catch (ยกเว้นข้อยกเว้น) { System.out.println ("ข้อยกเว้น:" + ex.getMessage ()); } ในที่สุด { if(jedis !=null) { jedis.close(); } } } }

ผลลัพธ์

เมื่อคุณเปิดชั้นเรียน “PatternPublish” , เอาต์พุตใน PatternSubscribe คอนโซลจะเป็นดังนี้ :-

Redis Jedis pub sub- วิธีติดตั้งระบบ pub/sub โดยใช้ jedis library

อ้างอิง :-

  1. เอกสารคำสั่งย่อยผับ

นั่นคือทั้งหมดสำหรับวิธีการใช้ระบบย่อย redis pub โดยใช้ห้องสมุด Jedis หากคุณชอบโปรดแบ่งปันความคิดของคุณในส่วนความคิดเห็นและแบ่งปันกับผู้อื่นด้วย