কম্পিউটার

রেলের অন্তর্নির্মিত ক্যাশে স্টোর:একটি ওভারভিউ

একটি নতুন Rails অ্যাপ তৈরি করার সময়, ক্যাশিং ইতিমধ্যেই সেট আপ করা আছে৷ এটি cache ব্যবহার করে কিছু ভিউ টুকরো মোড়ানোর মতো দ্রুত শুরু করা শুরু করে সাহায্যকারী বা Rails.cache.fetch ব্যবহার করে বহিরাগত API ফলাফল সংরক্ষণ করতে. ক্যাশ করা ডেটা রেলের ক্যাশে স্টোরগুলির একটিতে সংরক্ষণ করা হয়, যা ডেটা মেমরি, মেমক্যাচেড, রেডিস বা এমনকি সরাসরি ডিস্কে লিখতে পারে৷

কিন্তু বিভিন্ন ক্যাশে স্টোরগুলির মধ্যে কোনটি কোন পরিস্থিতির জন্য সেরা? এই ওভারভিউতে, আমরা প্রতিটি বিকল্পের দিকে নজর দেব।

👋 এবং আপনি যদি এই নিবন্ধটি পছন্দ করেন তবে রুবি (রেলগুলিতে) পারফরম্যান্স সম্পর্কে আমরা আরও অনেক কিছু লিখেছি, আমাদের রুবি পারফরম্যান্স পর্যবেক্ষণ চেকলিস্টটি দেখুন৷

ফাইল স্টোর

:file_store ডিফল্টরূপে ব্যবহৃত হয় যখন কোনো ক্যাশে স্টোর বিশেষভাবে কনফিগার করা হয় না। নামটি বোঝায়, এটি ফাইল সিস্টেমে ক্যাশে এন্ট্রি লিখে। এগুলো tmp/cache-এ শেষ হয় আপনি স্পষ্টভাবে cache_store সেট করে একটি ভিন্ন অবস্থান নির্বাচন না করলে অ্যাপ্লিকেশনের রুটে ডিরেক্টরি :file_store-এ কনফিগারেশন এবং আপনি যে ডিরেক্টরিটি ব্যবহার করতে চান তার জন্য একটি পাথ পাস করুন৷

config.cache_store = :file_store , "/path/to/cache/directory"

ক্যাশে ফাইলগুলি ডিস্কে সংরক্ষিত হয় এবং সেগুলি স্বয়ংক্রিয়ভাবে শুদ্ধ হয় না। এর মানে হল যে সেগুলি আপনার ডিস্ক পূরণ করবে না তা নিশ্চিত করার জন্য আপনাকে সেগুলি সরিয়ে নেওয়ার যত্ন নিতে হবে৷ উদাহরণস্বরূপ, Rails.cache.cleanup চালান পর্যায়ক্রমে আপনার ক্যাশে মেয়াদোত্তীর্ণ এন্ট্রি মুক্ত রাখবে।

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

উত্পাদনে, ফাইল স্টোরটি দরকারী যখন প্রতিটি সার্ভার প্রক্রিয়া একই ফাইল সিস্টেমে চলে। যদিও এটি মেমরি-ভিত্তিক ক্যাশে স্টোরের চেয়ে ধীর, তবে ফাইল স্টোরটি দুর্দান্ত হতে পারে যদি ক্যাশে খুব বড় হতে পারে৷

মেমরি স্টোর

সংস্করণ 5.0 থেকে, রেলগুলি স্বয়ংক্রিয়ভাবে :memory_store সেট আপ করে একটি নতুন অ্যাপ্লিকেশন তৈরি করার সময় বিকাশ কনফিগারেশনে। মেমরি স্টোর ব্যবহার করার সময়, রুবি ওয়েব সার্ভারের প্রক্রিয়ায় ক্যাশে করা ডেটা মেমরিতে রাখা হয়।

যেহেতু ডেটা আপনার ওয়েব সার্ভারের মতো একই প্রক্রিয়ায় মেমরিতে রাখা হয়, মেমরি স্টোরটি বিকাশে ব্যবহার করার জন্য দুর্দান্ত কারণ আপনি যখনই আপনার ডেভেলপমেন্ট ওয়েব সার্ভার পুনরায় চালু করেন তখন এটি স্বয়ংক্রিয়ভাবে সাফ হয়ে যায়৷

ডিফল্টরূপে, ইন-মেমরি স্টোর 32 মেগাবাইট ব্যবহার করবে, কিন্তু আপনি :size পাস করে সেটিকে ওভাররাইড করতে পারেন। ক্যাশে স্টোর কনফিগার করার সময় বিকল্প।

config.cache_store = :memory_store, { size: 16.megabytes }

ক্যাশে পূর্ণ হয়ে গেলে, নতুন এন্ট্রির জন্য জায়গা তৈরি করতে সাম্প্রতিকতম ব্যবহৃত এন্ট্রিগুলি স্বয়ংক্রিয়ভাবে ক্যাশে থেকে বাদ দেওয়া হয়৷

উৎপাদনে মেমরি স্টোর ব্যবহার করা সম্ভব (এবং আপনি খুঁজে পেতে পারেন দ্রুততম সমাধান), কিন্তু একাধিক সার্ভার প্রক্রিয়া চলমান সিস্টেমের জন্য সুপারিশ করা হয় না। যেহেতু প্রক্রিয়াগুলি একে অপরের ক্যাশে অ্যাক্সেস করতে পারে না, তাই প্রতিটি প্রক্রিয়াকে ক্যাশের নিজস্ব অনুলিপি বজায় রাখতে হবে৷

মেমক্যাশ স্টোর

:mem_cache_store একটি কেন্দ্রীভূত, ইন-মেমরি ক্যাশে এন্ট্রি সংরক্ষণ করতে ডালি রত্ন এবং মেমক্যাশেড ব্যবহার করে।

রুবি সার্ভার প্রক্রিয়ার পরিবর্তে ডেটা একটি পৃথক প্রক্রিয়ায় রাখা হয়। সেই কারণে, আপনার অ্যাপ রিস্টার্ট হলে ক্যাশে বাদ দেওয়া হয় না কিন্তু মেমক্যাশেড সার্ভার চলতে থাকা পর্যন্ত মেমরিতে থাকে। এটি পুনরায় চালু হলে, আপনি একটি নতুন ক্যাশে দিয়ে শুরু করবেন৷

Memcache স্টোর ধরে নেবে ক্যাশে সার্ভারটি ডিফল্টভাবে লোকালহোস্টে চলছে, কিন্তু আপনি দূরবর্তী সার্ভার ব্যবহার করতে এক বা একাধিক ঠিকানা পাস করতে পারেন।

config.cache_store = :mem_cache_store, "cache-1.example.com", "cache-2.example.com"

Memcached ডিফল্টরূপে সর্বোচ্চ 64 MB ক্যাশের আকার ব্যবহার করার জন্য কনফিগার করা হয়েছে, কিন্তু এটি কমান্ড লাইন বিকল্পগুলি ব্যবহার করে বা memcached.conf এ কনফিগার করা যেতে পারে। ফাইল মেমরি স্টোরের মতো, ক্যাশে সর্বাধিক আকারে পৌঁছালে এটি সম্প্রতি ব্যবহৃত আইটেমগুলিকে সরানো শুরু করবে৷

:mem_cache_store প্রোডাকশন পরিবেশের জন্য গো-টু ক্যাশে স্টোর। একটি কেন্দ্রীয় মেমক্যাশেড সার্ভার ব্যবহার করে, রিমোট মেমক্যাশেড সার্ভার ব্যবহার করার সময় ক্যাশে একাধিক ওয়েব সার্ভার এবং এমনকি একাধিক হোস্টের মধ্যে ভাগ করা যেতে পারে৷

রিডিস ক্যাশে স্টোর

Rails 5.2 :redis_cache_store চালু করেছে স্টোর, যা আপনাকে রেডিস-এ ক্যাশে এন্ট্রি সংরক্ষণ করতে দেয়, যেমন আপনি মেমক্যাশ স্টোর ব্যবহার করেন।

রেডিসকে রেল ক্যাশ স্টোর হিসাবে ব্যবহার করতে, একটি ডেডিকেটেড রেডিস ক্যাশে ব্যবহার করুন যা একটি LRU হিসাবে সেট আপ করা হয়েছে (সর্বশেষ সম্প্রতি ব্যবহৃত) ক্যাশে আপনার বিদ্যমান রেডিস সার্ভারে স্টোরটিকে নির্দেশ করার পরিবর্তে, নিশ্চিত করতে যে এন্ট্রিগুলি তার সর্বাধিক আকারে পৌঁছে গেলে স্টোর থেকে বাদ দেওয়া হয়।

Redis স্টোর Redis রত্ন (Redis::Distributed সহ) এবং hiredis-এর সাথে কাজ করে, সেইসাথে এক বা একাধিক রিমোট সার্ভার সেট করার মতো কনফিগারেশন বিকল্পগুলির জন্য সমর্থন প্রদান করে।

cache_servers = %w[redis://cache-01:6379/0 redis://cache-02:6379/0]
config.cache_store = :redis_cache_store, { url: cache_servers }

রেডিস পর্যায়ক্রমে ডিস্কে ডেটাসেট লিখবে, তাই ক্যাশে সার্ভার পুনরায় চালু হলে আপনার ক্যাশে করা বেশিরভাগ ডেটা বেঁচে থাকবে। বিকাশে, ক্যাশে করা আইটেমগুলি Rails.cache.delete ব্যবহার করে কনসোল থেকে সরানো যেতে পারে .

উৎপাদনে, রেডিস একটি কেন্দ্রীভূত ক্যাশে স্টোর প্রদানে মেমক্যাশেডের প্রতিদ্বন্দ্বী। যদিও Rails অ্যাপে এর ব্যবহার এখনও Memcached এর মতো ব্যাপক নয়, Redis স্টোর সম্ভবত ভবিষ্যতে একটি জনপ্রিয় Rails ক্যাশে স্টোর হয়ে উঠবে।

কোন ক্যাশে স্টোর ব্যবহার করবেন?

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

এটি Rails এ ক্যাশে স্টোরের আমাদের ওভারভিউ শেষ করে। প্রতিটি দোকানের জন্য আরও তথ্য এবং কনফিগারেশন বিকল্পের জন্য রেল গাইডগুলিতে ক্যাশে স্টোর বিভাগটি পরীক্ষা করে দেখুন৷

অ্যাপসিগন্যাল একাডেমি সিরিজের এই নিবন্ধটি এবং আগের নিবন্ধগুলি আপনার কেমন লেগেছে? আমাদের কাছে রেল লাইনে ক্যাশিং সম্পর্কে আরও কিছু নিবন্ধ রয়েছে, কিন্তু অনুগ্রহ করে আমাদের জানাতে দ্বিধা করবেন না যে আপনি পরবর্তীতে (ক্যাশিং-সম্পর্কিত বা অন্যথায়) কী লিখতে চান!


  1. রেলের সাথে হটওয়্যার ব্যবহার করা

  2. AWS Lambda এ রেল স্থাপন করা হচ্ছে

  3. রেলের সাথে কৌণিক ব্যবহার 5

  4. উইন্ডোজ স্টোর ক্যাশে ক্ষতিগ্রস্থ ত্রুটি ঠিক করুন