মন্টু মিয়াঁর সিস্টেম ডিজাইন
ডাটাবেসের জ্যাম এবং ক্যাশিং

ক্যাশ এভিকশন পলিসি

ফ্রিজ যখন ফুল

“তোর বাসার ফ্রিজের কথা চিন্তা কর,” বল্টু ভাই গল্পের সুরে বললেন। “ধর তুই রেগুলার বাজার করে আনিস। কিছুদিন পর পর যদি দেখিস ফ্রিজ একদম টসটসে ভরে গেছে, তখন নতুন বাজারগুলো রাখার জায়গা করবি কীভাবে?”

মন্টু ঝটপট উত্তর দিল, — “সহজ তো! যে খাবারটা অনেক দিন ধরে কেউ খাচ্ছে না বা বাসি হয়ে গেছে, সেটা ফেলে দিয়ে জায়গা খালি করব।”

বল্টু ভাই তুড়ি বাজিয়ে বললেন, — “ধরে নে ক্যাশও এক্স্যাক্টলি এই কাজটাই করে। নতুন ডাটা সেভ করার সময় যদি দেখে মেমরি (RAM) অলরেডি ফুল, তখন সে খুঁজে বের করে কোন ডাটা সবথেকে বেশি সময় ধরে কেউ ব্যবহার করছে না (Least Recently Used)। ওইগুলোকে ডিলিট করে দিলেই নতুন ডাটার জন্য জায়গা খালি হয়ে যায়। এই পদ্ধতির নাম হচ্ছে LRU (Least Recently Used) পলিসি।”

LRU cache

খুশি হয়ে মন্টু বললো, “বাহ দারুণ বুদ্ধি তো! তার মানে শুধু যেসব ডাটা ইউজাররা বর্তমানে ব্যবহার করছে, ওগুলোই ভিআইপি হিসেবে ক্যাশে থাকবে।”

— “হ্যাঁ, তাই। তবে এটাই একমাত্র উপায় না। আরও কিছু পলিসি আছে, জেনে রাখ কাজে দেবে:

  • LFU (Least Frequently Used): এখানে দেখা হয় কোন ডাটা সবথেকে 'কম বার' ব্যবহার করা হয়েছে। মানে যেটা পপুলার না, সেটা আউট।
  • FIFO (First In First Out): মানে 'আগে আসলে আগে পাবেন' এর উল্টো, যে আগে ঢুকেছে, জায়গা খালি করতে হলে তাকেই আগে বের করে দেওয়া হবে।
  • Random: চোখ বন্ধ করে লটারির মতো যেকোনো একটা ডাটা ডিলিট করে দেওয়া।

তবে তোর বিড়ালটিউবের জন্য LRU-ই সবথেকে মোক্ষম অস্ত্র। রেডিস বা মেমক্যাশড-এর মতো সার্ভিসে তুই এক ক্লিকেই এই পলিসিগুলো চেঞ্জ করে দেখতে পারবি কোনটা তোর জন্য ভালো কাজ করছে।”