Replacement Policies: LRU, LFU, etc.
ক্যাশের মেমোরি (Memory) খুবই সীমিত এবং দামি। যখন ক্যাশ সার্ভার পূর্ণ হয়ে যায় এবং নতুন ডেটা সেভ করার দরকার হয়, তখন পুরানো কোনো ডেটাকে মুছে ফেলতে হয়। একেই বলা হয় Cache Eviction বা Replacement Policy।
1. LRU (Least Recently Used)
এটি বর্তমানে সবচেয়ে বেশি ব্যবহৃত পলিসি। এখানে এমন ডেটা মুছে ফেলা হয় যা সবচেয়ে দীর্ঘ সময় ধরে কেউ ব্যবহার করেনি।
- কেন: আমরা ধরে নেই যে ডেটা অনেকক্ষণ কেউ রিড করেনি, তা ভবিষ্যতে রিড করার সম্ভাবনা খুব কম।
2. LFU (Least Frequently Used)
এখানে এমন ডেটা মুছে ফেলা হয় যা সবচেয়ে কম সংখ্যক বার ব্যবহার করা হয়েছে।
- কেন: এটি রিড কাউন্টের ওপর ভিত্তি করে চলে। যে ডেটা মাত্র ১-২ বার রিড করা হয়েছে তা মুছে ফেলার জন্য সিলেক্ট করা হয়।
3. FIFO (First In First Out)
এখানে এমন ডেটা মুছে ফেলা হয় যা সবার আগে ক্যাশে এসেছিল (ভর্তি হওয়ার সময় অনুযায়ী), তা যতই জনপ্রিয় হোক না কেন।
- অসুবিধা: এটি অনেক সময় খুব জনপ্রিয় লাইভ ডেটাকেও মুছে ফেলে।
4. Segmented LRU (SLRU)
এটি LRU এর একটি উন্নত সংস্করণ। এখানে ক্যাশকে দুটি ভাগে ভাগ করা হয়: একটিতে থাকে নতুন আসা ডেটা এবং অন্যটিতে থাকে ঘন ঘন ব্যবহৃত ডেটা। কোনো ডেটা একাধিকবার রিড হলে তবেই এটি প্রোটেক্টেড সেগমেন্টে যায়। এটি এলআরইউ-র তুলনায় স্মার্টলি কাজ করে।
5. RR (Random Replacement)
কোনো লজিক ছাড়াই র্যান্ডমলি যেকোনো ডেটা মুছে ফেলা হয়। এটি কনফিগারেশন খুব সহজ কিন্তু পারফরম্যান্স ভালো দেয় না।
তুলনা একনজরে
| পলিসি | মূল ভিত্তি | সুবিধা |
|---|---|---|
| LRU | লাস্ট রিড টাইম | সবচেয়ে ব্যালেন্সড |
| LFU | কতবার রিড হয়েছে | পপুলার কন্টেন্টের জন্য ভালো |
| FIFO | অ্যাড করার সময় | সিম্পল টু ইমপ্লিমেন্ট |
| SLRU | ব্যবহার ও সময় | খুব স্মার্ট ও হাই পারফর্মিং |
IMPORTANT
আধুনিক অধিকাংশ সিস্টেমে এবং রেডিসের মতো টুলে LRU অথবা LFU বেশি ব্যবহার করা হয় কারণ এগুলো বাস্তবধর্মী প্যাটার্ন ফলো করে।