এই টিউটোরিয়ালে, আমরা শিখব কিভাবে জেডিস লাইব্রেরি ব্যবহার করে একটি লিস্ট ভ্যালুতে CRUD অপারেশন করা যায়।
জেডিস লাইব্রেরি
জেডিস রেডিস ডেটাস্টোরের জন্য একটি জাভা ক্লায়েন্ট লাইব্রেরি। এটি ছোট এবং খুব সহজে ব্যবহারযোগ্য, এবং রেডিস ২.৮.x, ৩.x.x এবং এর উপরের ভার্সনদের সাথে পুরোপুরি কম্প্যাটিবল। জেডিস লাইব্রেরি সম্পর্কে আরও জানতে এখানে দেখুন।
লিস্ট ভ্যালু
লিস্ট হল ইনসারশন অর্ডারে সর্ট করা স্ট্রিংয়ের একটি সিকোয়েন্স। রেডিসে, লিস্ট একটি মান হিসেবে সংরক্ষণ করা যায় এবং রেডিস কমান্ডগুলি ব্যবহার করে রেডিস ডেটাবেসে সংরক্ষিত লিস্ট মান স্টোর, পরিচালনা ও রিট্রিভ করা যায়। লিস্ট কমান্ডসমূহ সম্পর্কে আরও জানতে এখানে দেখুন।
প্রজেক্ট সেটআপ
আপনার পছন্দের IDE-এ একটি সিম্পল মেভেন প্রজেক্ট তৈরি করুন এবং নিচে উল্লেখিত ডিপেন্ডেন্সি আপনার pom.xml ফাইলে যোগ করুন।
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency>
জেডিস লাইব্রেরির লেটেস্ট ভার্সনের জন্য এই পেজ চেক করুন।
রেডিস ইনস্টলেশন
আপনাকে রেডিসের লেটেস্ট ভার্সন ইনস্টল করতে হবে। রেডিস ইনস্টলেশন সম্পর্কে আরও জানতে এই পেজ চেক করুন।
জেডিস কানেকশন
Jedis (redis.clients.jedis.Jedis) ক্লাসের একটি অবজেক্ট তৈরি করুন আপনার জাভা কোডকে রেডিসের সাথে কানেক্ট করার জন্য।
Jedis jedis = new Jedis();
যদি আপনি আপনার লোকাল মেশিনে ডিফল্ট পোর্ট (৬৩৭৯)-এ একটি রেডিস সার্ভিস চালু করে থাকেন, তবে ডিফল্ট কনস্ট্রাক্টর ঠিকঠাক কাজ করবে। অন্যথায় আপনাকে কনস্ট্রাক্টরে সঠিক হোস্ট ইউআরএল এবং পোর্ট নম্বর আর্গুমেন্ট হিসেবে পাস করতে হবে।
তैयاری ও যোগ করুন
জেডিস লাইব্রেরি লিস্ট মানে এলিমেন্ট তৈরি ও ইনসার্ট করার জন্য বেশ কিছু মেথড প্রদান করে। কিছু গুরুত্বপূর্ণ মেথড নিচে দেওয়া হল:
- lpush: লিস্ট মানের হেডে এক বা একাধিক এলিমেন্ট ইনসার্ট করে। যদি লিস্ট মান অস্তিত্বে না থাকে, তবে এটি ইনসারশন অপারেশন করার আগে খালি লিস্ট মান ধারণকারী একটি কী তৈরি করে।
/* নতুন লিস্ট তৈরি করুন এবং স্ট্রিং মান a, b, c হেডে ইনসার্ট করুন */ jedis.lpush("list-1", "a", "b", "c"); /* নতুন লিস্ট তৈরি করুন এবং স্ট্রিং মান 1, 2-এর বাইট অ্যারে হেডে ইনসার্ট করুন */ jedis.lpush("list-2".getBytes(),new BigInteger("1").toByteArray(),new BigInteger("2").toByteArray()); - rpush: লিস্ট মানের টেলে এক বা একাধিক এলিমেন্ট ইনসার্ট করে। যদি লিস্ট মান অস্তিত্বে না থাকে, তবে এটি ইনসারশন অপারেশন করার আগে খালি লিস্ট মান ধারণকারী একটি কী তৈরি করে।
/* নতুন লিস্ট তৈরি করুন এবং স্ট্রিং মান a, b, c টেলে ইনসার্ট করুন */ jedis.rpush("list-3", "a", "b", "c"); /* নতুন লিস্ট তৈরি করুন এবং স্ট্রিং মান 1, 2-এর বাইট অ্যারে টেলে ইনসার্ট করুন */ jedis.rpush("list-4".getBytes(),new BigInteger("1").toByteArray(),new BigInteger("2").toByteArray()); - lpushx: লিস্ট মানের হেডে এক বা একাধিক এলিমেন্ট ইনসার্ট করে শুধু যদি লিস্ট মান ইতিমধ্যে অস্তিত্বে থাকে।
/* <list-1>-এর হেডে স্ট্রিং মান d, e ইনসার্ট করুন */ jedis.lpushx("list-1", "d", "e"); /* <list-2>-এর হেডে স্ট্রিং মান 3, 4 ইনসার্ট করুন */ jedis.lpushx("list-2".getBytes(),new BigInteger("3").toByteArray(),new BigInteger("4").toByteArray()); - rpushx: লিস্ট মানের টেলে এক বা একাধিক এলিমেন্ট ইনসার্ট করে শুধু যদি লিস্ট মান ইতিমধ্যে অস্তিত্বে থাকে।
/* <list-3>-এর টেলে স্ট্রিং মান d, e ইনসার্ট করুন */ jedis.rpush("list-3", "d", "e"); /* <list-4>-এর টেলে স্ট্রিং মান 3, 4 ইনসার্ট করুন */ jedis.rpush("list-4".getBytes(),new BigInteger("3").toByteArray(),new BigInteger("4").toByteArray());
রিমুভ ও রিটার্ন
লিস্ট মানের ওপর স্ট্যাক-লাইক পপ অপারেশন করার দুটি মেথড রয়েছে। সেগুলো নিম্নরূপ:
- lpop: লিস্ট মানের প্রথম এলিমেন্ট রিমুভ ও রিটার্ন করে।
/* <list-1>-এর হেড থেকে একক এলিমেন্ট রিমুভ ও রিটার্ন করুন */ jedis.lpop("list-1"); /* <list-2>-এর হেড থেকে একক এলিমেন্ট রিমুভ ও রিটার্ন করুন */ jedis.lpop("list-2".getBytes()); - rpop: লিস্ট মানের শেষ এলিমেন্ট রিমুভ ও রিটার্ন করে।
/* <list-3>-এর টেল থেকে একক এলিমেন্ট রিমুভ ও রিটার্ন করুন */ jedis.rpop("list-3"); /* <list-4>-এর টেল থেকে একক এলিমেন্ট রিমুভ ও রিটার্ন করুন */ jedis.rpop("list-4".getBytes());
দৈর্ঘ্য
llen মেথড একটি কীতে সংরক্ষিত লিস্ট মানের দৈর্ঘ্য পाने জন্য ব্যবহৃত হয়। কোড উদাহরণ:
/* <list-1>-এর আকার রিটার্ন করুন */ jedis.llen("list-1");
/* <list-2>-এর আকার রিটার্ন করুন */ jedis.llen("list-2".getBytes());
ডিলিট করুন
lrem মেথড লিস্ট মানের থেকে একটি এলিমেন্টের সব ঘটনা ডিলিট করতে ব্যবহৃত হয়।
/* <list-1>- থেকে a এলিমেন্টের এক ঘটনা রিমুভ করুন */ jedis.lrem("list-1", 1, "a");
/* <list-2>- থেকে 1 এলিমেন্টের দুটি ঘটনা রিমুভ করুন */ jedis.lrem("list-2".getBytes(), 2, "1".getBytes());
ইনডেক্স অনুযায়ী পান
lindex মেথড এর ইনডেক্স আর্গুমেন্ট অনুযায়ী একটি এলিমেন্ট পाने জন্য ব্যবহৃত হয়।
/* <list-1>- থেকে ইনডেক্স ৩-এ এলিমেন্ট পান */ jedis.lindex("list-1", 3);
/* <list-2>- থেকে ইনডেক্স ২-এ এলিমেন্ট পান */ jedis.lindex("list-2".getBytes(), 2);
ইনডেক্স অনুযায়ী আপডেট করুন
lset মেথড এর ইনডেক্স আর্গুমেন্ট অনুযায়ী একটি এলিমেন্ট আপডেট করতে ব্যবহৃত হয়।
/* <list-1>-এ ইনডেক্স ৩-এ g এলিমেন্ট সেট করুন */ jedis.lset("list-1", 3, "g");
/* <list-2>-এ ইনডেক্স ২-এ 6 এলিমেন্ট সেট করুন */ jedis.lset("list-2".getBytes(), 2, "6".getBytes());
একাধিক এলিমেন্ট পান
lrange মেথড লিস্ট মানের থেকে এক বা একাধিক এলিমেন্ট অফসেট আর্গুমেন্ট দ্বারা সংজ্ঞায়িত করে পाने জন্য ব্যবহৃত হয়।
/* <list-1>- থেকে ইনডেক্স ১ থেকে ৫ পর্যন্ত এলিমেন্ট রিটার্ন করুন */ jedis.lrange("list-1", 1, 5);
/* <list-2>- থেকে সব এলিমেন্ট রিটার্ন করুন */ jedis.lrange("list-2".getBytes(), 0, -1);
রেফারেন্স:
- লিস্ট কমান্ড ডক্স
জেডিস লাইব্রেরি ব্যবহার করে একটি লিস্ট ভ্যালুতে CRUD অপারেশন করার প্রক্রিয়া এতে সম্পন্ন। যদি আপনার ভালো লাগে, তবে মন্তব্য অংশে আপনার মতামত শেয়ার করুন এবং অন্যদেরও শেয়ার করুন।