Cache Management တွင်အထူးသဖြင့် cache ပစ္စည်းများသည်တစ် ဦး နှင့်တစ် ဦး ပေါ်တွင်မူတည်သည်။ ဤမှီခိုမှုများကိုခြေရာခံရန်နည်းလမ်းများစွာလိုအပ်သည်။ cache item အပြောင်းအလဲတစ်ခုပြောင်းလဲသောအခါ၎င်းနှင့်ဆက်စပ်သော cache ကိုအလိုအလျောက်မွမ်းမံနိုင်လိုသည်။ ဤအချိန်တွင်ထုံးစံအတိုင်း tags များသည်လှပသောအဖြေကိုပေးသည်။
Custom tags များကိုမိတ်ဆက်ပေးခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် cache item တစ်ခုစီအတွက်မှီခိုသော tag ကိုသတ်မှတ်နိုင်သည်။ ဤ tags များကို cache ပစ္စည်းများနှင့်အခြားသိုလှောင်ထားသောအချက်အလက်များအကြားမှီခိုမှုကိုဖော်ပြရန်အသုံးပြုသည်။ ကျွန်ုပ်တို့တွင်ပြင်ပအရင်းအမြစ်တစ်ခု၏အခြေအနေအပေါ် မူတည်. သိမ်းဆည်းထားသောဒေတာပစ္စည်းများရှိသည်ဆိုပါစို့။
ပထမ ဦး စွာသိမ်းဆည်းထားသောအချက်အလက်များကိုသိမ်းဆည်းရန်လုပ်ဆောင်မှုတစ်ခုကို ဖန်တီး. ၎င်းတွင်မှီခိုသော tags များကိုမိတ်ဆက်ပေးနိုင်သည်။
function storeWithDependencies($key, $data, $dependencyKey) {
// cache သို့ဒေတာသိမ်းဆည်းပါ
apcu_store($key, $data);
// cache ပစ္စည်းများအတွက်မှီခိုအမှတ်အသားများကို update လုပ်ပါ
apcu_store($dependencyKey, time()); // အမှတ်အသားများအဖြစ် timestamps ကိုသုံးပါ
}
ဤဥပမာတွင် storewithdemperthementementiesies () function ကို function ကိုဒေတာသိုလှောင်ခြင်းအပြင်မှီခို tag ကို update လုပ်သည်။ Timestamps များကိုမှီခိုမှုအမှတ်အသားများအဖြစ်အသုံးပြုခြင်းအားဖြင့်၎င်းသည်အမှတ်အသားအပြောင်းအလဲများပြုလုပ်သောအခါသက်ဆိုင်ရာ Cache ပစ္စည်းများကိုလည်းအဆင့်မြှင့်တင်ရန်သေချာစေရန်ဖြစ်နိုင်သည်။
သိုလှောင်ထားသည့်အချက်အလက်များကိုရရှိသောအခါမှီခိုမှုတွင်ပြောင်းလဲမှုရှိမရှိစစ်ဆေးရန်လိုအပ်သည်။ tag ကိုပြောင်းလဲမယ်ဆိုရင်,
function fetchWithDependencies($key, $dependencyKey) {
// လက်ရှိမှီခိုသော tag ကိုရယူပါ
$lastDependencyUpdate = apcu_fetch($dependencyKey);
// သိုလှောင်ထားတဲ့ဒေတာကိုရယူပါ
$cachedData = apcu_fetch($key);
// သိုလှောင်ထားသည့်ဒေတာမတည်ရှိပါကသို့မဟုတ်မှီခိုမှုကိုမွမ်းမံပါက,cache ကိုပြန်လည်တွက်ဆပါ
if ($cachedData === false || $lastDependencyUpdate < getLastDataUpdateTime()) {
$cachedData = getSomeDataFromDb();
apcu_store($key, $cachedData);
apcu_store($dependencyKey, time());
}
return $cachedData;
}
ဤကုဒ်တွင် cactwithdemperteactementracties () function ကို cached ဒေတာများတည်ရှိရှိမရှိစစ်ဆေးပြီးမှီခိုသောအမှတ်အသားများပြောင်းလဲခြင်းရှိ, မှီခိုသော tag ပြောင်းလဲခြင်း (ဥပမာဒေတာဘေ့စ်စားပွဲကိုအသစ်ပြောင်းခြင်းကဲ့သို့သော) cache data ကိုပြန်လည်တွက်ချက်ပြီး cache နှင့် tags များကိုပြန်လည်သတ်မှတ်ထားသည်။
apcu_entry () function tags များကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ပိုမိုထိရောက်သောနှင့်ပြောင်းလွယ်ပြင်လွယ်ရှိသော cache မှီခိုမှုကိုစီမံခန့်ခွဲနိုင်သည်။ cache မှီခိုသည်ပြောင်းလဲသည့်အခါ cache အသစ်ကိုအလိုအလျောက်အသစ်ပြောင်းခြင်း, သက်တမ်းကုန်ဆုံးသောအချက်အလက်များကိုသက်ရောက်စေသောမမှန်ကန်သောအချက်အလက်များကိုရှောင်ရှားလိမ့်မည်။
ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်, ရှုပ်ထွေးသောမှီခိုမှုများရှိသော cache system တွင်အောက်ပါနည်းဗျူဟာကိုသုံးနိုင်သည်။
function fetchWithComplexDependencies($key, $dependencyKey) {
// အသုံးပြု apcu_entry cached ဒေတာကိုရယူသို့မဟုတ်တွက်ချက်ရန်
return apcu_entry($key, function() use ($dependencyKey) {
// မှီခိုအမှတ်အသားများပြောင်းလဲသွားတယ်ရှိမရှိစစ်ဆေးပါ
if (apcu_exists($dependencyKey)) {
$lastUpdate = apcu_fetch($dependencyKey);
if ($lastUpdate < getLastDataUpdateTime()) {
// ဒေတာကို update လုပ်ထားပါတယ်,reacquisitioned ခံရဖို့လိုအပ်ပါတယ်
return getSomeDataFromDb();
}
}
// အဆိုပါ cached ဒေတာကိုမပြောင်းလဲပါဘူး,ရှိပြီးသား cache သို့ပြန်သွားရန်
return apcu_fetch($key);
});
}
ဤဥပမာတွင် apcu_entry () သည် cache ကိုဒေတာများကိုလက်လှမ်းမီစေရန်အသုံးပြုသည်။ ဤနည်းအားဖြင့်ပြင်ပ၌မှီခိုမှုအပြောင်းအလဲများပြုလုပ်သောအခါနောက်ဆုံးပေါ်ဒေတာများကိုရရှိရန်အတွက်အချိန်မီ cache system ကိုအသစ်ပြောင်းနိုင်သည်။