যদি রেডিস ইতিমধ্যে স্ট্যাকের একটি অংশ হয় তবে রেডিসের পাশাপাশি মেমক্যাচ কেন ব্যবহৃত হয়?


85

রেডিস মেমাক্যাচ করে যা কিছু সরবরাহ করতে পারে (এলআরইউ ক্যাশে, আইটেমের সমাপ্তি, এবং বর্তমানে সংস্করণ 3.x + তে ক্লাস্টারিং করছে, বর্তমানে বিটাতে রয়েছে) বা টেম্প্রোক্সি জাতীয় সরঞ্জামগুলির মাধ্যমে। অভিনয়ও একই রকম। তবুও, রেডিস অধ্যবসায় যুক্ত করে যার কারণে আপনার একটি সার্ভার পুনরায় চালু হওয়ার ক্ষেত্রে ক্যাশে ওয়ার্মিংয়ের দরকার নেই।

কিছু পুরানো উত্তরগুলির রেফারেন্স যা রেডিস এবং মেমক্যাচের সাথে তুলনা করে, যার মধ্যে কিছু রেডিসকে মেমক্যাসের প্রতিস্থাপন হিসাবে উপস্থাপন করে (যদি ইতিমধ্যে স্ট্যাকটিতে উপস্থিত থাকে):

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

২০১৪ সালের হিসাবে, আপনার স্ট্যাকের অতিরিক্ত উপাদান হিসাবে যুক্ত ব্যথাটিকে কেন মেমচেচ করা হচ্ছে, যখন আপনার ইতিমধ্যে একটি রেডিস উপাদান রয়েছে যা মেমক্যাচ করে যা করতে পারে সব করতে পারে? ইতিমধ্যে বিদ্যমান রেডিসকে বাদ দিয়ে স্থপতি / প্রকৌশলীগুলিকে ম্যাকচেড অন্তর্ভুক্ত করার পক্ষে অনুকূল পয়েন্টগুলি কী?

হালনাগাদ :

আমাদের প্ল্যাটফর্মগুলির জন্য, আমরা মেমক্যাচ সম্পূর্ণভাবে বাতিল করে দিয়েছি এবং প্লেইন এবং লজিকাল ক্যাশে প্রয়োজনীয়তার জন্য রেডিস ব্যবহার করি। উচ্চতর পারফরম্যান্ট, নমনীয় এবং নির্ভরযোগ্য।

কিছু উদাহরণের পরিস্থিতি:

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

উত্তর:


122

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

অন্যান্য জিনিস যা মেমক্যাচ সম্পর্কে ভাল পয়েন্ট:

  • এটি কোডের একটি খুব সহজ টুকরো, সুতরাং যদি আপনার কেবলমাত্র এটির কার্যকারিতা প্রয়োজন হয় তবে এটি অনুমিত একটি যুক্তিসঙ্গত বিকল্প, তবে আমি কখনও এটি উত্পাদনে ব্যবহার করি নি।
  • এটি বহু-থ্রেডযুক্ত, সুতরাং আপনার যদি কোনও একক-সেট-সেটআপ স্কেল করতে হয় তবে এটি ভাল জিনিস এবং আপনার কেবল একটি উদাহরণ দিয়ে কথা বলা দরকার।

আমি বিশ্বাস করি যে লোকেদের বুদ্ধিমান ক্যাচিংয়ের দিকে এগিয়ে যাওয়া বা যখন তারা রেডিস ডেটা স্ট্রাকচারের মাধ্যমে ক্যাশেড ডেটা কাঠামো সংরক্ষণের চেষ্টা করে তখন রেডিস ক্যাশে হিসাবে আরও বেশি সংবেদনশীল হয়।

রেডিস এলআরইউ এবং মেমক্যাচড এলআরইউয়ের মধ্যে তুলনা।

মেমক্যাচড এবং রেডিস উভয়ই সত্যিকারের এলআরইউ উচ্ছেদগুলি সম্পাদন করে না, তবে কেবল এটির একটি আনুমানিক।

মেমক্যাশে উচ্ছেদটি প্রতিটি-আকারের শ্রেণীর এবং এটির স্ল্যাব বরাদ্দকারীর বাস্তবায়ন বিবরণের উপর নির্ভর করে। উদাহরণস্বরূপ, আপনি যদি কোনও আইটেম একটি নির্দিষ্ট আকারের শ্রেণীর সাথে মানানসই করতে চান, তবে মেমক্যাচড class শ্রেণীর মেয়াদোত্তীর্ণ / সম্প্রতি ব্যবহৃত হয়নি এমন আইটেমগুলি অপসারণ করার চেষ্টা করবে, পরিবর্তে বস্তুটি কী তা বোঝার জন্য বিশ্বব্যাপী চেষ্টা করার চেষ্টা করবে আকার, যা সেরা প্রার্থী।

রেডিস পরিবর্তে maxmemoryআকারের শ্রেণি নির্বিশেষে সমস্ত বস্তুর দিকে সীমা অতিক্রম করার সময় উচ্ছেদের প্রার্থী হিসাবে একটি ভাল বস্তু বাছাই করার চেষ্টা করে , তবে কেবলমাত্র সেরা অবজেক্টকেই নয়, প্রায় কোনও ভাল বস্তু সরবরাহ করতে সক্ষম হয় বৃহত্তর নিষ্ক্রিয়তার সাথে সময়

রেডিস যেভাবে কাজ করে তা হ'ল বেশ কয়েকটি অবজেক্টের নমুনা তৈরি করে, সবচেয়ে দীর্ঘ সময়ের জন্য অলস (অ্যাক্সেস করা হয়নি) এমন একটিটিকে বেছে নেওয়া। যেহেতু রেডিস 3.0.০ (বর্তমানে বিটাতে রয়েছে) অ্যালগরিদমটি উন্নত হয়েছিল এবং উচ্ছেদের জুড়ে একটি ভাল প্রার্থী পুলও গ্রহণ করে, সুতরাং অনুমানের উন্নতি করা হয়েছিল। ইন Redis ডকুমেন্টেশন আপনি কিভাবে এটি কাজ করে সম্পর্কে একটি বিবরণ এবং বিস্তারিত সঙ্গে গ্রাফ জানতে পারেন

সরল স্ট্রিং -> স্ট্রিং মানচিত্রের জন্য রেডিসের চেয়ে মেমচেডের কাছে মেমরির আরও ভাল পদক্ষেপ রয়েছে।

রেডিস একটি সফটওয়্যারটির আরও জটিল অংশ, তাই রেডিসে মানগুলি একটি উচ্চ স্তরের প্রোগ্রামিং ল্যাঙ্গুয়েজে থাকা সামগ্রীর সাথে আরও একইভাবে সংরক্ষণ করা হয়: এগুলির সাথে মেমরি পরিচালনার জন্য টাইপ, এনকোডিং, রেফারেন্স গণনা যুক্ত রয়েছে associated এটি রেডিসের অভ্যন্তরীণ কাঠামোটিকে ভাল এবং পরিচালনাযোগ্য করে তোলে, তবে মেমচেডের তুলনায় ওভারহেড রয়েছে যা কেবল স্ট্রিংগুলির সাথে সম্পর্কিত deals

রেডিস যখন আরও মেমরির দক্ষ হতে শুরু করে

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

আপনি আসলে একটি একক জেএসওএন (বা বাইনারি-এনকোডড) ব্লব হিসাবে ম্যাকচেডে কোনও বস্তু সংরক্ষণ করতে পারেন তবে রেডিসের বিপরীতে, এটি আপনাকে স্বাধীন ক্ষেত্রগুলি আনতে বা আপডেট করতে দেবে না।

বুদ্ধিমান ক্যাচিংয়ের প্রসঙ্গে রেডিসের সুবিধা।

রেডিস ডেটা স্ট্রাকচারের কারণে, ক্যাশেটি অবৈধ হয়ে গেলে ধ্বংসকারী অবজেক্টগুলিকে মেমক্যাচ করে ব্যবহৃত সাধারণ প্যাটার্নটি পরে ডিবি থেকে পুনরায় তৈরি করা রেডিস ব্যবহারের আদিম উপায়।

উদাহরণস্বরূপ, কল্পনা করুন আপনাকে সাইটের "সর্বাধিক" বিভাগটি জনপ্রিয় করতে হ্যাকার নিউজে পোস্ট করা সর্বশেষ এন নিউজকে ক্যাশে করতে হবে। আপনি রেডিসের সাথে যা করছেন তা হল একটি নতুন তালিকা প্রবেশ করানো সহ একটি তালিকা (এম আইটেমগুলিতে আবৃত) take আপনি যদি আপনার ডেটার জন্য অন্য স্টোর এবং ক্যাশে হিসাবে রেডিস ব্যবহার করেন তবে আপনি যা করেন তা হ'ল উভয়কেই জনবহুল করা কোনও নতুন আইটেম পোস্ট করা হলে দর্শন (রেডিস এবং ডিবি) পপুলেট করা। কোনও ক্যাশে অবৈধতা নেই।

তবে অ্যাপ্লিকেশনটিতে সর্বদা যুক্তি থাকতে পারে যাতে রেডিস তালিকাটি যদি খালি দেখতে পাওয়া যায়, উদাহরণস্বরূপ একটি সূচনা শেষে, প্রাথমিক দৃশ্যটি ডিবি থেকে পুনরায় তৈরি করা যায়।

বুদ্ধিমান ক্যাচিং ব্যবহার করে রেডিসের সাথে মেমচেডের তুলনায় আরও দক্ষ পদ্ধতিতে ক্যাচিং করা সম্ভব তবে সমস্ত সমস্যা এই প্যাটার্নের জন্য উপযুক্ত নয়। উদাহরণস্বরূপ এইচটিএমএল টুকরা ক্যাশে করা এই কৌশলটি থেকে উপকৃত হতে পারে না।


ধন্যবাদ আন্টেরেজ স্রষ্টা। তবে ** সরল স্ট্রিংয়ের জন্য রেডিস মেমরির পদচিহ্ন মেমক্যাচের চেয়ে বেশি কেন? ** সংকোচনের কারণ কি একটি ফ্যাক্টর? অথবা রেডিস যখন একটি প্লেইন স্ট্রিং সঞ্চয় করার জন্য একটি এসইটি ব্যবহার করা হয় তখন কিছু অন্যান্য অতিরিক্ত ডেটা সঞ্চয় করে? উত্তরে যদি আপনি এই তথ্যের উত্তরে অন্তর্ভুক্ত করতে পারেন।
ধ্রুবপাঠক

4
আমি উত্তরটি উন্নত করার চেষ্টা করেছি। প্রতিক্রিয়া জানানোর জন্য ধন্যবাদ।
অ্যান্টেরেজ

4
উপরে বর্ণিত "বুদ্ধি" এর অন্য দিক, বা রেডিসের ডেটা ধরণের এবং অপারেশন এবং / অথবা স্ক্রিপ্টগুলির মাধ্যমে সার্ভার-সাইড লজিকের উপর নির্ভর করা হ'ল আপনি অ্যাপ্লিকেশন জটিলতা এবং নেটওয়ার্ক উভয়ই সংরক্ষণ করতে পারেন (যেমন অ্যান্ট্রেজে @ অ্যান্টেরিজ আলোচনা করেছেন )। com / নিউজ / 73 এবং ইআইফ্যাচ redistabs.com/blog/the-proven-redis-performance এ )।
ইত্তামার হাবর

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

4
দুর্দান্ত উত্তর, রেডিসের পিতা সম্প্রদায়ের সাথে কতটা উত্সর্গীকৃত তা ভালবাসেন।
মাহন

13

অভ্যাসগুলি ভাঙ্গা শক্ত :)

গুরুতরভাবে যদিও, দুটি মূল কারণ রয়েছে - আমার বোঝার - কেন মেমক্যাচড এখনও ব্যবহৃত হয়:

  1. উত্তরাধিকার - এমন বিকাশকারী যারা মেমচেডের সাথে আরামদায়ক এবং পরিচিত, পাশাপাশি অ্যাপ্লিকেশনগুলি যা এটি সমর্থন করে। এর অর্থ এটিও একটি পরিপক্ক এবং পরীক্ষিত প্রযুক্তি।
  2. স্কেলিং - স্ট্যান্ডার্ড মেমক্যাচড সহজেই অনুভূমিকভাবে স্কেলেবল, যদিও রেডিস (শীঘ্রই প্রকাশিত হওয়া v3 অবধি এবং বাদে) সেই প্রান্তে আরও কাজ প্রয়োজন (অর্থাত্ শারডিং)।

যাহোক:

  1. রে উত্তরাধিকার - রেডিসের দৃust়তা (ডেটা স্ট্রাকচার, কমান্ড, জেদী ...) প্রদত্ত, এটি সক্রিয়ভাবে বিকশিত হচ্ছে এবং প্রতিটি অনুমেয় ভাষায় ক্লায়েন্ট - নতুন অ্যাপ্লিকেশনগুলি সাধারণত এটির সাথে বিকাশ করা হয়।
  2. স্কেলিং পুনরায় - আসন্ন ভি 3 এর পাশাপাশি এমন কিছু সমাধান রয়েছে যা স্কেলিংকে আরও সহজ করে তুলতে পারে। উদাহরণস্বরূপ, রেডিস ক্লাউড ডেটা ক্ষতি বা পরিষেবা বাধা ছাড়াই বিজোড় স্কেলিং সরবরাহ করে। রেডিসকে স্কেলিং / শার্পিং করার জন্য আরেকটি জনপ্রিয় পদ্ধতির নাম টিম্প্রোক্সি

4
কেবল একটি নোট: এটি যেমন টুইটারে বর্তমান রক্ষণাবেক্ষণকারী দ্বারা নিশ্চিত করেছেন, মেমক্যাচড এখনও সক্রিয়ভাবে বিকাশ / রক্ষণাবেক্ষণ করা হয়েছে। আমি অনুমান করি যে এটি প্রায়শই নতুন স্টাফ যুক্ত করে না এই প্রকল্পটি পরিপক্কতার কারণে এবং নতুন স্টাফ যুক্ত করতে অনীহা প্রকাশের কারণে, সুতরাং নতুন বিকাশগুলি অপ্টিমাইজেশন / ফিক্সগুলিতে কেন্দ্রীভূত।
অ্যান্টেরিজ

4
টিআইএল যে মেমক্যাচড এখনও বেঁচে আছে এবং লাথি মারছে
হাবের

4
খাঁটি ক্যাশে দৃশ্যের জন্য রেডিস শারাডিংয়ের চেয়ে কনসিস্ট্যান্ট হ্যাশিং গরিফ ব্যর্থতার পক্ষে আরও শক্তিশালী মডেল। নোড পড়ার সাথে সাথে ক্যাশে কীগুলি স্বয়ংক্রিয়ভাবে অন্যান্য সার্ভারে চলে যায়। যতক্ষণ আপনার একক সার্ভার থাকে ততক্ষণ আপনার ক্যাশে এখনও চালিত হয়, যেখানে রেডিসের বিপরীতে যেখানে কোনও হ্যাশগ্রুপের জন্য যদি আপনি মাস্টার এবং স্লেভকে হারিয়ে ফেলেন তবে আপনার ক্লাস্টার ব্যর্থ হয়।
উসমান ইসমাইল

4
RedisLabs দুর্দান্ত। এটি ইউরিফি ক্লাউডের পিছনে একটি মূল প্রযুক্তি।
মারাত্মক_অরর

4
আমি এমন কোনও বাস্তবায়ন সম্পর্কেও অত্যন্ত সন্দেহজনক যেগুলি মাল্টি থ্রেডেড এবং ইভেন্ট লুপ ভিত্তিক নয়। ... ঠিক আছে, এখন প্রতিটি উপস্থিত পারফরম্যান্স আপোলজিস্টরা কোথায় আছেন, আমি তাদের ডিনারটি রেখে দিয়েছি। এখন redis এটি করতে পারে, এবং আমি সিস্টেমের দিক থেকে আরও বেশি প্রো-রেডিস হব। যদিও এই মুহুর্তে, ডেভ গ্রুপটি ক্যাচিংয়ের ক্ষেত্রে অস্বাভাবিকভাবে সক্ষম না হলে, মেমক্যাচ করা একটি সহজ এবং আরও দক্ষ বাস্তবায়ন features
জেএম বেকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.