না, রেডিস ক্যাশের চেয়ে অনেক বেশি।
ক্যাশের মতো, রেডিস কী = মান জোড়া সঞ্চয় করে। তবে ক্যাশের বিপরীতে, রেডিস আপনাকে মানগুলিতে কাজ করতে দেয়। রেডিসে স্ট্রিংস, সেটস, হ্যাশ, তালিকা এবং সাজানো সেটগুলিতে 5 টি ধরণের ডেটা রয়েছে। প্রতিটি ডাটা টাইপ বিভিন্ন ক্রিয়াকলাপ প্রকাশ করে।
রেডিসকে বোঝার সর্বোত্তম উপায় হ'ল কোনও অ্যাপ্লিকেশনটি কীভাবে আপনি এটি ডেটাবেসে সঞ্চয় করতে চলেছেন তা ভেবে চিন্তা না করে মডেল করা।
আসুন আমরা স্ট্যাকওভারফ্লো.কম তৈরি করতে চাই তা বলি। এটি সহজ রাখতে, আমাদের প্রশ্ন, উত্তর, ট্যাগ এবং ব্যবহারকারীদের প্রয়োজন।
মডেলিং প্রশ্নাবলী, ব্যবহারকারী এবং উত্তর
প্রতিটি বস্তুকে মানচিত্র হিসাবে মডেল করা যায়। উদাহরণস্বরূপ, একটি প্রশ্ন ক্ষেত্রের আইডি, শিরোনাম, তারিখ_যুক্ত, ভোট, জিজ্ঞাসা_বায়, স্থিতি with সহ মানচিত্র} একইভাবে, উত্তর হ'ল ক্ষেত্রগুলির সাথে একটি মানচিত্র {আইডি, প্রশ্ন_আইডি, উত্তর_পদ্ধতি, উত্তর_পথ, ভোট, স্থিতি}} একইভাবে, আমরা একটি ব্যবহারকারী অবজেক্ট মডেল করতে পারেন।
এই প্রতিটি বস্তু হ্যাশ হিসাবে সরাসরি রেডিসে সংরক্ষণ করা যেতে পারে। অনন্য আইডি উত্পন্ন করতে, আপনি পরমাণু বর্ধন আদেশটি ব্যবহার করতে পারেন। এটার মতো কিছু -
$ HINCRBY unique_ids question 1
(integer) 1
$ HMSET question:1 title "Is Redis just a cache?" asked_by 12 votes 0
OK
$ HINCRBY unique_ids answer 1
(integer) 1
$ HMSET answer:1 question_id 1 answer_text "No, its a lot more" answered_by 15 votes 1
OK
ভোট পরিচালনা
এখন, প্রত্যেকবারই কেউ প্রশ্ন বা উত্তরকে সমর্থন করে, আপনার কেবল এটি করা দরকার
$ HINCRBY question:1 votes 1
(integer) 1
$ HINCRBY question:1 votes 1
(integer) 2
হোমপেজের জন্য প্রশ্নের তালিকা
এরপরে, আমরা হোম পৃষ্ঠায় প্রদর্শন করতে সর্বাধিক সাম্প্রতিক প্রশ্নগুলি সঞ্চয় করতে চাই। আপনি যদি .NET বা জাভা প্রোগ্রাম লিখছিলেন, আপনি প্রশ্নগুলিকে একটি তালিকায় সংরক্ষণ করবেন। দেখা যাচ্ছে, এটি রেডিসেও সংরক্ষণ করার সেরা উপায়।
যতবারই কেউ কোনও প্রশ্ন জিজ্ঞাসা করে, আমরা তালিকায় তার আইডি যুক্ত করি।
$ lpush questions question:1
(integer) 1
$ lpush questions question:2
(integer) 1
এখন, আপনি যখন নিজের হোমপেজটি রেন্ডার করতে চান, আপনি রেডিসকে সাম্প্রতিক 25 টি প্রশ্নের জন্য জিজ্ঞাসা করছেন।
$ lrange questions 0 24
1) "question:100"
2) "question:99"
3) "question:98"
4) "question:97"
5) "question:96"
...
25) "question:76"
এখন আপনার আইডিস রয়েছে, পাইপলাইনিং ব্যবহার করে রেডিস থেকে আইটেমগুলি পুনরুদ্ধার করুন এবং তাদের ব্যবহারকারীর কাছে দেখান।
ট্যাগ দ্বারা প্রশ্নাবলী, ভোট অনুসারে বাছাই করা
পরবর্তী, আমরা প্রতিটি ট্যাগের জন্য প্রশ্নগুলি পুনরুদ্ধার করতে চাই। তবে এসও আপনাকে প্রতিটি ট্যাগের আওতায় শীর্ষে ভোট দেওয়া প্রশ্ন, নতুন প্রশ্ন বা উত্তরহীন প্রশ্ন দেখতে দেয়।
এটির মডেল করতে আমরা রেডিসের সাজানো সেট বৈশিষ্ট্যটি ব্যবহার করি। একটি সাজানো সেট আপনাকে প্রতিটি উপাদানের সাথে স্কোর সংযুক্ত করতে দেয়। এরপরে আপনি তাদের স্কোরের ভিত্তিতে উপাদানগুলি পুনরুদ্ধার করতে পারেন।
রেডিস ট্যাগের জন্য এগিয়ে যান এবং এটি করতে দিন
$ zadd questions_by_votes_tagged:redis 2 question:1
(integer) 1
$ zadd questions_by_votes_tagged:redis 10 question:2
(integer) 1
$ zadd questions_by_votes_tagged:redis 5 question:613
(integer) 1
$ zrange questions_by_votes_tagged:redis 0 5
1) "question:1"
2) "question:613"
3) "question:2"
$ zrevrange questions_by_votes_tagged:redis 0 5
1) "question:2"
2) "question:613"
3) "question:1"
আমরা এখানে কি করেছি? আমরা একটি বাছাই করা সেটটিতে প্রশ্ন যুক্ত করেছি এবং প্রতিটি প্রশ্নের সাথে একটি স্কোর (ভোটের সংখ্যা) যুক্ত করেছি। প্রতিবার কোনও প্রশ্ন উত্সাহিত হয়ে গেলে, আমরা এর স্কোর বাড়িয়ে দেব। এবং যখন কোনও ব্যবহারকারী "ভোটগুলি অনুসারে রেডিস ট্যাগ করা প্রশ্নসমূহ" ক্লিক করেন, আমরা কেবল একটি করি zrevrange
এবং শীর্ষ প্রশ্নগুলি ফিরে পাই back
পৃষ্ঠা রিফ্রেশ না করে রিয়েলটাইম প্রশ্নাবলী
এবং অবশেষে, একটি বোনাস বৈশিষ্ট্য। আপনি যদি প্রশ্নের পৃষ্ঠাটি খোলা রাখেন তবে নতুন প্রশ্ন যুক্ত হওয়ার পরে এসও আপনাকে জানাবে। রেডিস এখানে কীভাবে সহায়তা করতে পারে?
রেডিসের একটি পাব-সাব মডেল রয়েছে। আপনি চ্যানেল তৈরি করতে পারেন, উদাহরণস্বরূপ "চ্যানেল_উকশনস_ট্যাগড_ডিস"। আপনি তখন subscribe
কোনও নির্দিষ্ট চ্যানেলে ব্যবহারকারীগণ। যখন একটি নতুন প্রশ্ন যুক্ত করা হয়, আপনি publish
সেই চ্যানেলে একটি বার্তা দিতেন । সমস্ত ব্যবহারকারী তখন বার্তাটি পাবেন। ব্রাউজারে বার্তাটি সরবরাহ করতে আপনাকে ওয়েব সকেট বা ধূমকেতুর মতো একটি ওয়েব প্রযুক্তি ব্যবহার করতে হবে তবে রেডিস আপনাকে সার্ভারের পাশের সমস্ত নদীর গভীরতানির্ণয় দিয়ে সহায়তা করবে।
অধ্যবসায়, নির্ভরযোগ্যতা ইত্যাদি
ক্যাশের বিপরীতে, রেডিস হার্ড ডিস্কের ডেটা ধরে রাখে। আরও নির্ভরযোগ্যতা সরবরাহ করার জন্য আপনার কাছে মাস্টার-স্লেভ সেটআপ থাকতে পারে। আরও জানতে, এখানে দৃ Pers়তা এবং প্রতিরূপ বিষয়গুলি দেখুন - http://redis.io/docamentation