Redis এর গতি এবং নমনীয়তা এটিকে ডেভেলপারদের জন্য একটি অত্যন্ত শক্তিশালী হাতিয়ার করে তোলে এবং এটি বিভিন্ন উপায়ে ব্যবহার করা যেতে পারে। যদিও রেডিসকে প্রায়শই একটি মূল-মূল্যের দোকান হিসাবে উল্লেখ করা হয় তবে এটি ডেটা স্ট্রাকচার সার্ভার হিসাবে আরও ভালভাবে বর্ণনা করা হয়, কারণ এটি 5টি ভিন্ন ডেটা স্ট্রাকচার প্রকারকে সমর্থন করে, যথা:
- স্ট্রিংস
- হ্যাশ
- তালিকা
- সেট
- বাছাই করা সেট
প্রতিটি স্ট্রাকচার টাইপের শেয়ার করা কমান্ডের পাশাপাশি কিছু কমান্ড থাকে যা একটি নির্দিষ্ট স্ট্রাকচার টাইপের জন্য নির্দিষ্ট।
এই ভূমিকাটি কীভাবে Redis ব্যবহার করতে হয় তার মূল বিষয়গুলি এবং বিভিন্ন ডেটা কাঠামোর একটি ওভারভিউ কভার করবে। আমরা আরও কিছু মৌলিক কমান্ড কভার করব, যদিও মনে রাখবেন যে লেখার সময় Redis-এর 160-এর বেশি রয়েছে এবং আপনি redis.io/commands-এ চমৎকার ডকুমেন্টেশন পেতে পারেন।
রিডিস শুরু করা হচ্ছে
Redis এর জন্য ObjectRocket দ্বারা প্রদত্ত একটি উদাহরণ ব্যবহার করুন বা স্থানীয়ভাবে Redis ইনস্টল করুন৷
৷স্থানীয়ভাবে ইনস্টল করতে, কোডটি ডাউনলোড, এক্সট্রাক্ট এবং কম্পাইল করুন:
$ wget https://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
স্থানীয় উদাহরণ শুরু করুন:
$ src/redis-server
Redis ব্যবহার করা
এখন আপনি বিল্ট-ইন ক্লায়েন্ট ব্যবহার করে রেডিসের সাথে যোগাযোগ করতে প্রস্তুত। Redis উদাহরণের জন্য একটি ObjectRocket হোস্টনাম, পোর্ট এবং পাসওয়ার্ড দিয়ে redis-cli শুরু করুন:
$ redis-cli -h my-host -p 1234 -a mypassword
যদি আপনি একটি স্থানীয় উদাহরণ ব্যবহার করেন, হোস্ট হল লোকালহোস্ট, ডিফল্ট পোর্ট হল 6379, এবং ডিফল্টরূপে কোনও পাসওয়ার্ড নেই৷
$ redis-cli
পান এবং সেট করুন
খুব সহজ স্তরে, রেডিসকে একটি মূল-মূল্যের দোকান হিসাবে বর্ণনা করা যেতে পারে। SET foo বার কমান্ড জারি করে আপনি বারে foo-এর মান সেট করেন। উদাহরণস্বরূপ, আপনি এইমাত্র যে redis-cli শুরু করেছেন তা থেকে নিম্নলিখিত কমান্ডটি ইস্যু করুন:
redis> SET foo bar
OK
এখন GET কমান্ড দিয়ে foo-এর মান পড়ুন।
redis> GET foo
"bar"
মেয়াদ শেষ এবং TTL
আপনি EXPIRE কমান্ডটি ব্যবহার করে নির্দিষ্ট সময়ের মধ্যে মেয়াদ শেষ হওয়ার জন্য কী সেট করতে পারেন। TTL কী মেয়াদ শেষ হওয়ার আগে অবশিষ্ট সময় রিপোর্ট করে।
redis> SET foo bar
OK
redis> EXPIRE foo 120
(integer) 1
redis> TTL foo
(integer) 113
তালিকা
রেডিসের একটি স্বতন্ত্র বৈশিষ্ট্য হল যে একটি কী-এর মানগুলি কেবলমাত্র মানগুলির পরিবর্তে ডেটা-স্ট্রাকচার হতে পারে৷
একটি তালিকা তৈরি করতে LPUSH বা RPUSH ব্যবহার করুন। যদি একটি তালিকা ইতিমধ্যেই বিদ্যমান থাকে, তাহলে LPUSH প্রদত্ত মানটিকে তালিকার শুরুতে যোগ করবে এবং RPUSH এটিকে শেষে যুক্ত করবে।
redis> LPUSH cities "San Francisco"
(integer) 1
redis> RPUSH cities "Austin"
(integer) 2
redis> LRANGE cities 0 -1
1. "San Francisco"
2. "Austin"
redis> SORT cities alpha
1. "Austin"
2. "San Francisco"
redis> LPOP cities
"San Francisco"
redis> LRANGE cities 0 -1
1. "Austin"
SORT কমান্ড ALPHA আর্গুমেন্টের সাথে আরোহী ক্রমে লিক্সিকোগ্রাফিকভাবে তালিকাকে সাজায়। ক্রমানুসারে সাজানোর জন্য, SORT কমান্ডে DESC আর্গুমেন্ট যোগ করুন।
RPOP কমান্ড তালিকার শেষ থেকে একটি উপাদান পপ করে। LPOP তালিকার শুরু থেকে একটি উপাদান পপ করে।
সেট
সেটগুলি তালিকার অনুরূপ, প্রতিটি উপাদান শুধুমাত্র একবার ঘটতে পারে। নীচের উদাহরণে আমরা মার্কিন যুক্তরাষ্ট্রের একটি ছোট সেট তৈরি করি। SADD কমান্ড সেটটিতে একটি আইটেম যুক্ত করে, যদি না আইটেমটি সেটটিতে ইতিমধ্যেই বিদ্যমান থাকে। আইটেমটি বিদ্যমান না থাকলে, এটি যোগ করা হয় এবং 1 ফেরত দেওয়া হয়; অন্যথায়, 0 ফেরত দেওয়া হয়। SMEMBERS সেটের সমস্ত আইটেম ফেরত দেয়। SCARD সেটের উপাদানের সংখ্যা প্রদান করে। SREM তালিকা থেকে একটি আইটেম সরিয়ে দেয়।
redis> SADD states "Vermont"
(integer) 1
redis> SMEMBERS states
1. "Vermont"
redis> SADD states "Texas"
(integer) 1
redis> SCARD states
(integer) 2
redis> SADD states "Vermont"
(integer) 0
redis> SMEMBERS states
1. "Vermont"
2. "Texas"
redis> SADD states "California"
(integer) 1
redis> SMEMBERS states
1. "Vermont"
2. "Texas"
3. "California"
redis> SREM states "California"
(integer) 1
redis> SMEMBERS states
1. "Vermont"
2. "Texas"
হ্যাশ
হ্যাশ ব্যবহার করে, আপনি প্রতিটি কী-তে ক্ষেত্রগুলিতে স্ট্রিং মান নির্ধারণ এবং ম্যাপ করতে পারেন। কয়েকটি ক্ষেত্র সহ একটি হ্যাশ এমনভাবে সংরক্ষণ করা হয় যেটি খুব কম জায়গা নেয়, তাই আপনি একটি ছোট রেডিস উদাহরণে লক্ষ লক্ষ বস্তু সংরক্ষণ করতে পারেন নীচের উদাহরণে, HSET ব্যবহার করে ব্যবহারকারী:1 এর নাম "জন র্যাকার" সেট করা হয়েছে আদেশ HGET কমান্ড ব্যবহারকারীর নামের মান পেতে ব্যবহৃত হয়। HGETALL নির্দিষ্ট কী সম্পর্কিত সমস্ত কী এবং মান প্রদান করে।
redis> HSET user:1 name "john racker"
(integer) 1
redis> HGET user:1 name
"joe racker"
redis> HSET user:1 company "objectrocket"
(integer) 1
redis> HGET user:1 company
"ObjectRocket"
redis> HSET user:1 city "austin"
(integer) 1
redis> HGET user:1 city
"austin"
redis> HGETALL user:1
1. "name"
2. "john racker"
3. "company"
4. "objectrocket"
5. "city"
6. "austin"
সর্ট করা সেট
বাছাই করা সেটগুলি সেটের অনুরূপ যে তারা স্ট্রিংয়ের পুনরাবৃত্তি না করা সংগ্রহ, যদিও প্রতিটি সদস্য একটি স্কোরের সাথে যুক্ত। সাজানো সেটগুলিকে তাদের স্কোর দ্বারা ক্রমবর্ধমান উপায়ে সাজানো হয়। একই উপাদান শুধুমাত্র একক সময় বিদ্যমান, কোনো পুনরাবৃত্তি উপাদান অনুমোদিত নয়, যদিও স্কোর পুনরাবৃত্তি হতে পারে।
এই উদাহরণে আমরা 10/23/2014 অনুযায়ী ইংলিশ প্রিমিয়ার লিগে শীর্ষ 5 টি দলের মোট পয়েন্ট যোগ করব:
redis> ZADD EPL 22 "chelsea"
(integer) 1
redis> ZADD EPL 17 "man city"
(integer) 1
redis> ZADD EPL 16 "southampton"
(integer) 1
redis> ZADD EPL 13 "liverpool"
(integer) 1
redis> ZADD EPL 13 "west ham"
(integer) 1
redis> ZRANK EPL "chelsea"
(integer) 3
redis> ZRANK EPL "liverpool"
(integer) 0
redis> ZRANK EPL "arsenal"
(nil)
এরপর আমরা ZRANGE:
ব্যবহার করে মোট পয়েন্টের ভিত্তিতে দলগুলিকে র্যাঙ্ক করবredis> ZRANGE EPL 0 -1
1) "liverpool"
2) "west ham"
3) "southampton"
4) "man city"
5) "chelsea"
redis> ZRANGE EPL 2 3
1) "southampton"
2) "man city"
মনে রাখবেন, সেটগুলি ক্রমবর্ধমান ক্রমে সাজানো হয়, তাই তাদের মোট পয়েন্টের উপর ভিত্তি করে দলের র্যাঙ্ক দেখতে আমাদের ZREVRANGE ব্যবহার করতে হবে
redis> ZREVRANGE EPL 0 -1
1) "chelsea"
2) "man city"
3) "southampton"
4) "west ham"
5) "liverpool"
redis> ZREVRANGE EPL 0 -1 WITHSCORES
1) "chelsea"
2) "22"
3) "man city"
4) "17"
5) "southampton"
6) "16"
7) "west ham"
8) "13"
9) "liverpool"
10) "13"
এরপর, সাউদাম্পটন একটি গেম খেলে এবং 3 পয়েন্ট অর্জন করে জিতে। আমরা স্কোর বাড়াতে ZINCRBY ব্যবহার করি, এবং সাউদাম্পটন কীভাবে লীগে দ্বিতীয় স্থানে চলে গেছে তা দেখতে ZREVRANGE ব্যবহার করি। আমরা সাউদাম্পটনের র্যাঙ্ক দেখতে ZREVRANK ব্যবহার করতে পারি। দ্রষ্টব্য:র্যাঙ্কটি 0-ভিত্তিক, যার মানে সর্বোচ্চ স্কোর (চেলসি) সদস্যের র্যাঙ্ক 0।
redis> ZINCRBY EPL 3 "southampton"
"19"
redis> ZREVRANGE EPL 0 -1 WITHSCORES
1) "chelsea"
2) "22"
3) "southampton"
4) "19"
5) "man city"
6) "17"
7) "west ham"
8) "13"
9) "liverpool"
10) "13"
redis> ZREVRANK EPL "southampton"
(integer) 1
redis> ZREVRANGEBYSCORE EPL 25 (15
1) "chelsea"
2) "southampton"
3) "man city"
আগামী সপ্তাহগুলিতে আমরা এই আশ্চর্যজনক বহুমুখী বিকাশকারী সরঞ্জামটির জন্য রেডিস এবং কিছু ব্যবহারের ক্ষেত্রে আরও গভীরে ডুব দেব। রেডিস চালানোর বিষয়ে আপনার কোনো প্রশ্ন থাকলে অনুগ্রহ করে আমাদের একটি লাইন দিন অথবা আপনি কীভাবে আপনার অ্যাপ্লিকেশন স্ট্যাকে রেডিস ব্যবহার করছেন সে সম্পর্কে আমাদের বলতে চান।