কম্পিউটার

রেডিস জেডিস পাব সাব- জেডিস লাইব্রেরি ব্যবহার করে কীভাবে পাব/সাব সিস্টেম বাস্তবায়ন করবেন

এই টিউটোরিয়ালে, আমরা শিখব কিভাবে জেডিস লাইব্রেরি ব্যবহার করে রেডিস পাব সাব সিস্টেম বাস্তবায়ন করা যায়।

জেডিস লাইব্রেরি

জেডিস হল রেডিস ডেটাস্টোরের জন্য একটি জাভা ক্লায়েন্ট লাইব্রেরি। এটি ছোট এবং ব্যবহার করা খুব সহজ, এবং redis 2.8.x, 3.x.x এবং উপরের ডেটাস্টোরের সাথে সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ। আপনি এখানে জেডিস লাইব্রেরি সম্পর্কে আরও তথ্য পেতে পারেন।

রেডিস পাব/সাব সিস্টেম

Redis প্রকাশ/সাবস্ক্রাইব মেসেজিং দৃষ্টান্ত প্রয়োগ করে। এই মেসেজিং দৃষ্টান্ত অনুসারে, বার্তাটির প্রেরক (প্রকাশক) তাদের বার্তা সরাসরি একটি নির্দিষ্ট রিসিভার (গ্রাহক) কে পাঠাতে প্রোগ্রাম করা হয় না। তারা একটি নির্দিষ্ট চ্যানেলে তাদের বার্তা পাঠায় (প্রকাশ করে), যার জ্ঞান ছাড়াই বা কোন প্রাপক বার্তাটি গ্রাস করবে কি না। একজন রিসিভার, যারা বার্তাটি গ্রহণ করতে চায় তারা এক বা একাধিক চ্যানেলে সাবস্ক্রাইব করার মাধ্যমে তাদের আগ্রহ প্রকাশ করে এবং তারা কোন প্রেরক বার্তাটি পাঠিয়েছিল তা না জেনে শুধুমাত্র সেই চ্যানেলগুলিতে প্রকাশিত বার্তাগুলি পাবে। আপনি এখানে রেডিস পাব/সাব সিস্টেম সম্পর্কে আরও তথ্য পেতে পারেন।

প্রকল্প সেটআপ

আপনার প্রিয় IDE-তে একটি সাধারণ মাভেন প্রকল্প তৈরি করুন এবং আপনার pom.xml-এ নীচে উল্লিখিত নির্ভরতা যোগ করুন ফাইল।

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>3.0.1</version>
</dependency>

জেডিস লাইব্রেরির সর্বশেষ সংস্করণের জন্য, এই পৃষ্ঠাটি দেখুন।

রিডিস ইনস্টলেশন

আপনাকে Redis এর সর্বশেষ সংস্করণ ইনস্টল করতে হবে। রেডিস ইনস্টল করার বিষয়ে আরও তথ্যের জন্য এই পৃষ্ঠাটি দেখুন৷

জেডিস সংযোগ

Jedis এর একটি বস্তু তৈরি করুন ( redis.clients.jedis.Jedis ) আপনার জাভা কোডকে রেডিস-এর সাথে সংযুক্ত করার জন্য ক্লাস।

Jedis jedis = new Jedis();

আপনি যদি আপনার স্থানীয় মেশিনে এবং ডিফল্ট পোর্টে (6379) একটি redis পরিষেবা শুরু করেন তবে ডিফল্ট কনস্ট্রাক্টর ঠিক কাজ করবে। অন্যথায় আপনাকে সঠিক হোস্ট ইউআরএল এবং পোর্ট নম্বর পাস করতে হবে। কনস্ট্রাক্টরের মধ্যে একটি যুক্তি হিসাবে।

চ্যানেলগুলিতে সদস্যতা নিন

একটি ক্লাস তৈরি করুন "চ্যানেল সাবস্ক্রাইব করুন" , এই ক্লাস একটি ক্লায়েন্ট তৈরি করে চ্যানেল C1 এবং C2 সদস্যতা নেবে। এই ক্লায়েন্টটি একটি বার্তা পাবে, যখন অন্য কোনো ক্লায়েন্ট চ্যানেল C1 বা চ্যানেল C2 এ একটি বার্তা প্রকাশ করবে।

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class ChannelSubscribe {

  public static void main(String[] args) {
		
    Jedis jedis = null;

    try {
			
	/* Creating Jedis object for connecting with redis server */
	jedis = new Jedis();
		
	/* Creating JedisPubSub object for subscribing with channels */	
	JedisPubSub jedisPubSub = new JedisPubSub() {
				
		@Override
		public void onMessage(String channel, String message) {
			System.out.println("Channel " + channel + " has sent a message : " + message );
			if(channel.equals("C1")) {
				/* Unsubscribe from channel C1 after first message is received. */	
				unsubscribe(channel);
			}
		}
				
		@Override
		public void onSubscribe(String channel, int subscribedChannels) {
			System.out.println("Client is Subscribed to channel : "+ 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 : "+ channel);
			System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of channels");
		}
			
	};
			
	/* Subscribing to channel C1 and C2 */
	jedis.subscribe(jedisPubSub, "C1", "C2");
			
	} catch(Exception ex) {			
			
		System.out.println("Exception : " + ex.getMessage());	
			
	} finally {
			
		if(jedis != null) {
			jedis.close();
		}
	}		
  }
}

আউটপুট

আপনি যখন একটি ক্লাস চালান “চ্যানেল সাবস্ক্রাইব করুন” , আউটপুট নিম্নলিখিত হবে :- 

রেডিস জেডিস পাব সাব- জেডিস লাইব্রেরি ব্যবহার করে কীভাবে পাব/সাব সিস্টেম বাস্তবায়ন করবেন




চ্যানেলগুলিতে প্রকাশ করুন

একটি ক্লাস তৈরি করুন “চ্যানেল প্রকাশ করুন” , এই ক্লাসটি জেডিস সংযোগ ব্যবহার করে রেডিস সার্ভারের সাথে সংযুক্ত হবে এবং প্রতিটি চ্যানেল C1 এবং C2 এ দুটি বার্তা প্রকাশ করবে।

import redis.clients.jedis.Jedis;

public class ChannelPublish {

  public static void main(String[] args) {
		
    Jedis jedis = null;
		
    try {			
        /* Creating Jedis object for connecting with redis server */
        jedis = new Jedis();
			
        /* Publishing message to channel C1 */
        jedis.publish("C1", "First message to channel C1");
			
        /* Publishing message to channel C2 */
        jedis.publish("C2", "First message to channel C2");
		
        /* Publishing message to channel C1 */
        jedis.publish("C1", "Second message to channel C1");
			
        /* Publishing message to channel C2 */
        jedis.publish("C2", "Second message to channel C2");
		
    } catch(Exception ex) {			
			
        System.out.println("Exception : " + ex.getMessage());
    } finally {
			
        if(jedis != null) {
          jedis.close();
        }		
    }
  }
}

আউটপুট

যখন আপনি একটি ক্লাস চালান “চ্যানেল প্রকাশ করুন” , চ্যানেল সাবস্ক্রাইব-এ আউটপুট কনসোল নিম্নলিখিত হবে:- 

রেডিস জেডিস পাব সাব- জেডিস লাইব্রেরি ব্যবহার করে কীভাবে পাব/সাব সিস্টেম বাস্তবায়ন করবেন

প্যাটার্নগুলিতে সদস্যতা নিন

একটি ক্লাস তৈরি করুন "প্যাটার্ন সাবস্ক্রাইব" , এই ক্লাস প্যাটার্ন C* এবং D এর সদস্যতা নেবে? একটি ক্লায়েন্ট তৈরি করে।

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class PatternSubscribe {

  public static void main(String[] args) {
		
	Jedis jedis = null;
	
	try {
			
	/* Creating Jedis object for connecting with redis server */
	jedis = new Jedis();
			
	/* Creating JedisPubSub object for subscribing with channels */	
	JedisPubSub jedisPubSub = new JedisPubSub() {
				
		@Override
		public void onPMessage(String pattern, String channel, String message) {
			System.out.println("Channel " +channel+ " has sent a message : " +message+ " on pattern " + pattern);
			if(pattern.equals("C*")) {
				/* Unsubscribe from pattern C* after first message is received. */	
				punsubscribe(pattern);
			}
		}
				
		@Override
		public void onPSubscribe(String pattern, int subscribedChannels) {
			System.out.println("Client is Subscribed to pattern : "+ pattern);
			System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of patterns");
		}
				
		@Override
		public void onPUnsubscribe(String pattern, int subscribedChannels) {
			System.out.println("Client is Unsubscribed from pattern : "+ pattern);
			System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of patterns");
		}
				
	};
			
	/* Subscribing to channel C1 and C2 */
	jedis.psubscribe(jedisPubSub, "C*", "D?");
			
	} catch(Exception ex) {			
			
		System.out.println("Exception : " + ex.getMessage());	
			
	} finally {
		
		if(jedis != null) {
			jedis.close();
		}
		
	}		
  }

}

আউটপুট

আপনি যখন একটি ক্লাস চালান “প্যাটার্ন সাবস্ক্রাইব” , আউটপুট নিম্নলিখিত হবে :- 

রেডিস জেডিস পাব সাব- জেডিস লাইব্রেরি ব্যবহার করে কীভাবে পাব/সাব সিস্টেম বাস্তবায়ন করবেন




প্যাটার্নগুলিতে প্রকাশ করুন

একটি ক্লাস তৈরি করুন "প্যাটার্ন প্রকাশ করুন"৷ , এই ক্লাস জেডিস সংযোগ ব্যবহার করে রেডিস সার্ভারের সাথে সংযোগ করবে এবং চ্যানেল C13, D2, C134, এবং D3 এ বার্তা প্রকাশ করবে।

import redis.clients.jedis.Jedis;

public class PatternPublish {

  public static void main(String[] args) {
	
	Jedis jedis = null;
	
	try {			
	/* Creating Jedis object for connecting with redis server */
	jedis = new Jedis();
			
	/* Publishing message to channel C13 */
	jedis.publish("C13", "Message to channel C13");
	
	/* Publishing message to channel D2 */
	jedis.publish("D2", "Message to channel D2");
		
	/* Publishing message to channel C134 */
	jedis.publish("C134", "Message to channel C134");
			
	/* Publishing message to channel D3 */
	jedis.publish("D3", "Message to channel D3");
			
	} catch(Exception ex) {			
			
        	System.out.println("Exception : " + ex.getMessage());	
			
	} finally {
			
		if(jedis != null) {
			jedis.close();
		}
			
	}
  }
	
}

আউটপুট

আপনি যখন একটি ক্লাস চালান “প্যাটার্ন প্রকাশ করুন” , প্যাটার্নসাবস্ক্রাইব-এ আউটপুট কনসোল নিম্নলিখিত হবে:-

রেডিস জেডিস পাব সাব- জেডিস লাইব্রেরি ব্যবহার করে কীভাবে পাব/সাব সিস্টেম বাস্তবায়ন করবেন

রেফারেন্স :-

  1. পাব সাব কমান্ড ডক্স

জেডিস লাইব্রেরি ব্যবহার করে কীভাবে রেডিস পাব সাব সিস্টেম বাস্তবায়ন করা যায় তার জন্যই এটি। আপনি যদি এটি পছন্দ করেন, অনুগ্রহ করে মন্তব্য বিভাগে আপনার চিন্তা শেয়ার করুন এবং অন্যদের সাথেও শেয়ার করুন৷

 
  1. রেডিস পাব সাব (মেসেজ ব্রোকার সিস্টেম) - রেডিস টিউটোরিয়াল

  2. রিডিস আনসাবস্ক্রাইব করুন - রেডিস পাব/সাব-এ একাধিক চ্যানেল থেকে কীভাবে আনসাবস্ক্রাইব করবেন

  3. Redis পাবলিশ - কিভাবে redis pub/sub-এ একটি বার্তা প্রকাশ করবেন

  4. রেডিস সাবস্ক্রাইব করুন – কীভাবে রেডিস পাব/সাব-এ একাধিক চ্যানেল সাবস্ক্রাইব করবেন