রেডিস কি কেবল একটি ক্যাশে?


255

আমি কিছু Redis ডক্স পড়া হয়েছে এবং টিউটোরিয়াল চেষ্টা http://try.redis-db.com/ । এখনও অবধি, আমি রেডিস এবং ক্যাচিং প্রযুক্তির মতো বেগ বা এন্টারপ্রাইজ লাইব্রেরি ক্যাচিং ফ্রেমওয়ার্কের মধ্যে কোনও পার্থক্য দেখতে পাচ্ছি না

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

আমি কী মিস করছি?


3
Redis.io থেকে : রেডিস একটি ওপেন সোর্স, উন্নত কী-মান স্টোর। কীগুলিতে স্ট্রিং, হ্যাশ, তালিকা, সেট এবং বাছাই করা সেট থাকতে পারে বলে এটি প্রায়শই ডেটা স্ট্রাকচার সার্ভার হিসাবে পরিচিত। এটি বলেছিল, আমি আপনার প্রশ্নটি বন্ধ করার পক্ষে ভোট দিয়েছি কারণ এটি স্ট্যাকওভারফ্লোর ফর্ম্যাটের সাথে খাপ খায় না।
লিনাস থিল

29
আমি এর এসও বিন্যাসে সম্মত নই। আপনি এটি আরও উপযুক্ত হবে বলে মনে করেন?
ম্যাট ইভান্স

উত্তর:


631

না, রেডিস ক্যাশের চেয়ে অনেক বেশি।

ক্যাশের মতো, রেডিস কী = মান জোড়া সঞ্চয় করে। তবে ক্যাশের বিপরীতে, রেডিস আপনাকে মানগুলিতে কাজ করতে দেয়। রেডিসে স্ট্রিংস, সেটস, হ্যাশ, তালিকা এবং সাজানো সেটগুলিতে 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


15
এটি পিইউবি / এসইউবি সম্পর্কিত কমান্ড ব্যবহার করে একটি অত্যন্ত সাধারণ সার্ভিস বাসও।
জিম ডেনিস

3
আমি কীভাবে ব্যবহারকারীর দ্বারা প্রশ্ন পুনরুদ্ধার করতে পারি? আমি কি আপনার প্রশ্নের সাথে প্রতিটি প্রশ্নের জন্য প্রশ্ন তৈরির মতো একটি তালিকা তৈরি করব: ব্যবহারকারী: 1 বা আমার ট্যাগ ব্যবহার করা উচিত?
ডায়োগো আলভেস

2
খুব দরকারী এবং বিশদ বিবরণ যা আমি প্রত্যেকে এসও
ট্রং ভু

5

শুধু একটি ক্যাশে নয়।

  • মেমরির কী-মান সঞ্চয়স্থানে
  • একাধিক ডেটাটাইপ সমর্থন (স্ট্রিং, হ্যাশ, তালিকা, সেট, সাজানো সেট, বিটম্যাপস এবং হাইপারলগলোগগুলি)
  • এটি শারীরিক স্টোরেজে (যদি প্রয়োজন হয়) ক্যাশে ডেটা সংরক্ষণ করার ক্ষমতা সরবরাহ করে।
  • সাপোর্ট পাব-সাব মডেল
  • রেডিস ক্যাশে উচ্চ প্রাপ্যতার জন্য প্রতিলিপি সরবরাহ করে (মাস্টার / স্লেভ)

4

রেডিসের অতি-দ্রুত লুয়া-স্ক্রিপ্টগুলির মতো অনন্য ক্ষমতা রয়েছে। এটির এক্সিকিউশন সময় সি কমান্ড এক্সিকিউশনের সমান। এটি কাজের জন্য প্রয়োজনীয় অনেকগুলি উন্নত অবজেক্টস যেমন লকস এবং সেমফোরাসগুলির জন্য পরিশীলিত রেডিস ডেটা ম্যানিপুলেশনের জন্যও পারমাণবিকতা নিয়ে আসে।

রেডিসন নামে একটি মেমরি ডেটা গ্রিড ভিত্তিক একটি রেডিস রয়েছে যা জাভাতে সহজেই বিতরণ অ্যাপ্লিকেশন তৈরি করতে দেয় । বিতরণ ধন্যবাদ Lock, Semaphore, ReadWriteLock, CountDownLatch, ConcurrentMapবস্তু এবং আরও অনেক কিছু।

নিখুঁতভাবে মেঘে কাজ করে এবং এডাব্লুএস ইলাস্টিক্যাচ , এডাব্লুএস ইলাস্টিকচে ক্লাস্টার এবং অ্যাজুরি রেডিস ক্যাশে সমর্থন করে সমর্থন সমর্থন করে


1

আসলে আপেক্ষিক তথ্য উপস্থাপনের (বা কোনও উপাত্ত উপস্থাপনের কোনও ধরণের) এবং ডাটাবেসের ভূমিকা (ক্যাশে, স্থায়ী অধ্যবসায় ইত্যাদি) এর মধ্যে কোনও নির্ভরতা নেই।

রেডিস ক্যাশের পক্ষে এটি সত্য, তবে এটি কেবল ক্যাশে অনেক বেশি। এটি সম্পূর্ণ গতিতে সম্পূর্ণ মেমরি ডাটাবেস। এটি ডিস্কে ডেটা ধরে রাখে। এটি সম্পর্কিত নয়, এটি মূল-মূল্যের সঞ্চয়স্থান।

আমরা উত্পাদন এটি ব্যবহার। রেডিস আমাদের এমন সফ্টওয়্যার তৈরি করতে সহায়তা করে যা প্রতি সেকেন্ডে কয়েক হাজার অনুরোধ পরিচালনা করে এবং পুরো প্রাকৃতিক জীবনচক্রের সময় গ্রাহক ব্যবসায়ের ডেটা রাখে।


0

রেডিস একটি ক্যাশে যা বিতরণ পরিবেশ / মাইক্রোসার্ভেস আর্কিটেকচারের জন্য সবচেয়ে উপযুক্ত best

এটি দ্রুত, নির্ভরযোগ্য, পারমাণবিকতা এবং ধারাবাহিকতা সরবরাহ করে এবং সেট, হ্যাশ, তালিকা ইত্যাদির মতো ডেটাটাইপগুলির ব্যাপ্তি রয়েছে

আমি এটি গত এক বছর থেকে ব্যবহার করছি এবং এটি সত্যিই একজন ত্রাণকর্তারূপে আসে যখন আপনাকে খুব দ্রুত একটি উত্পাদন প্রস্তুত সমাধান সরবরাহ করতে হয় এবং কোনও কার্য সম্পাদন সম্পর্কিত সমস্যার জন্য যেমন আপনি সর্বদা ডেটা ক্যাশে ব্যবহার করতে পারেন।


0

ক্যাশে সার্ভার হওয়া ছাড়াও, রেডিস বিশেষত একটি ডেটা স্ট্রাকচার সার্ভার। ডেটা স্ট্রাকচার সার্ভারের আকারে ক্যাশ হওয়া মানে অনেক কিছু, কারণ ডেটা স্ট্রাকচারগুলি প্রোগ্রাম বা অ্যাপ্লিকেশনগুলির মৌলিক বিষয় । আপনি এসকিউএল ডাটাবেসগুলিকে স্টোরেজ প্রযুক্তি হিসাবে ব্যবহার করছেন এবং বিবেচনা করুন একটি তালিকা, একটি হ্যাশ মানচিত্র, একটি র‌্যাঙ্কিং সেট বা এর মতো জিনিসগুলি, এটি ঘাড়ের মধ্যে একধরণের ব্যথা। রেডিস আপনাকে সরাসরি এই কার্যকারিতা সরবরাহ করতে পারে খুব সহজ উপায়ে সরবরাহ করতে পারে, এইভাবে বিকাশকে অত্যন্ত সরল করে।

অন্যদিকে, কোনও ডেটা স্ট্রাকচার সার্ভার ক্যাশে আকারে থাকতে হবে না। রেডিসের সাথে সামঞ্জস্যপূর্ণ প্রকল্প রয়েছে তবে ধ্রুব স্টোরেজ ইঞ্জিন রয়েছে।


0

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

অজগর সাথে বাস্তবায়ন

https://beyondexperiment.com/vijayravichandran06/redis-data-structure-with-python/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.