လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Cache query သည်စွမ်းဆောင်ရည်ကိုအကောင်းဆုံးဖြစ်စေရန် Redis / file system သို့ရလဒ်များ

Cache query သည်စွမ်းဆောင်ရည်ကိုအကောင်းဆုံးဖြစ်စေရန် Redis / file system သို့ရလဒ်များ

M66 2025-05-28

Database Query Performance သည်စွမ်းဆောင်ရည်မြင့်မားသော PHP applications များကိုတီထွင်သောအခါဘုံစိန်ခေါ်မှုတစ်ခုဖြစ်သည်။ အထူးသဖြင့်တူညီသောအချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါတူညီသောစုံစမ်းမှုကိုထပ်ခါတလဲလဲလုပ်ဆောင်ခြင်းသည်လျှောက်လွှာတုန့်ပြန်အချိန်ကိုအလွန်နှေးကွေးစေနိုင်သည်။ ဤအချိန်တွင် Cached Query ရလဒ်များသည်ထိရောက်သော optimization နည်းလမ်းဖြစ်လာသည်။ MySQLI_result query query query query ကို redis (သို့) ဖိုင်စနစ်အားသိုလှောင်ခြင်းဖြင့် PHP application စွမ်းဆောင်ရည်ကိုမည်သို့ကောင်းမွန်အောင်ပြုလုပ်ရမည်ကိုဤဆောင်းပါးတွင်လေ့လာပါမည်။

အဘယ်ကြောင့် query ရလဒ်များကို cache လုပ်ရန်လိုအပ်သနည်း။

လျှောက်လွှာသည်ဒေတာဘေ့စ်စုံစမ်းမှုတစ်ခုကိုပြုလုပ်သောအခါတိုင်းဒေတာဘေ့စ်အင်ဂျင်သည် hard disk မှအချက်အလက်များကိုဖတ်ပြီး query query ရလဒ်များကိုဖတ်လိမ့်မည်။ အကယ်. ဤမေးမြန်းချက်များသည်ပုံတူပွားခြင်းနှင့်ဒေတာများသည်မကြာခဏပြောင်းလဲသွားပါကဒေတာဘေ့စ်မှတူညီသောအချက်အလက်များကိုအချိန်တိုင်းဖတ်ရန်မလိုပါ။ Cache နည်းပညာသည်စုံစမ်းမှုရလဒ်များကိုမှတ်ဉာဏ် (ဥပမာ redis) ကိုမှတ်ဉာဏ်ရလဒ်များသိုလှောင်ထားနိုင်သည်သို့မဟုတ်၎င်းတို့အားဒေသန္တရဖိုင်စနစ်တွင်သိုလှောင်ထားနိုင်သည်။

mysqli_result query query ရလဒ်များကို cache ကို redis ကိုသုံးပါ

Redis သည် open source in-memory data storage system ဖြစ်ပြီးအချက်အလက်များကိုလေ့ကျင့်ထားသောအချက်အလက်များကိုသိုလှောင်ထားသည့်အချက်အလက်များကိုသိုလှောင်ရန်အထူးသဖြင့်အသုံးပြုသည်။ အောက်ဖော်ပြပါ MySQLI_RESult Query Query RETIS သို့ RETIS သို့ cache လုပ်ရန်အခြေခံအဆင့်များဖြစ်သည်။

1 ။ Redis ကို install လုပ်ပြီး configure လုပ်ပါ

ပထမ ဦး စွာဆာဗာတွင် Redis 0 န်ဆောင်မှုကိုတပ်ဆင်ရန်လိုအပ်သည်။ installation နည်းလမ်းသည်သင်၏ operating system ပေါ်တွင်မူတည်သည်။ အသေးစိတ်တပ်ဆင်ခြင်းအဆင့်များအတွက် M66.Net/redis -installation ကိုသင်ရည်ညွှန်းနိုင်သည်။

2 ။ Redis Php extension ကို install လုပ်ပါ

PHP တွင် Redis ကိုအသုံးပြုရန် PHP အတွက် Redis extension ကို install လုပ်ရန်လိုအပ်သည်။ ၎င်းကိုအောက်ပါ command မှတဆင့် install လုပ်နိုင်သည်။

 sudo pecl install redis

ထို့နောက် PHP.INI ဖိုင်တွင် Redis extension ကိုဖွင့်ပါ။

 extension=redis.so

3 ။ Redis နှင့် cache မေးမြန်းမှုရလဒ်များကိုဆက်သွယ်ပါ

MySQL query ကို Redis သို့မည်သို့ cache ကိုမည်သို့သိမ်းဆည်းရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာကုဒ်ဖြစ်သည်။

 <?php
// ဆက် MySQL ဒေတာဘေ့စ်
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 检查ဆက်是否成功
if ($mysqli->connect_error) {
    die('ဆက်失败: ' . $mysqli->connect_error);
}

// query cached keys
$queryKey = 'my_query_result';

// ဆက် Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// ကြိုးစားကြည့်ပါ Redis သိုလှောင်ထားတဲ့ဒေတာကိုရယူပါ
$cachedResult = $redis->get($queryKey);

if ($cachedResult) {
    // လှျင် Redis က cache ရလဒ်များရှိပါတယ်,တိုက်ရိုက်ပြန်လာပါ
    $result = unserialize($cachedResult);
    echo 'မှ Redis ဒေတာကိုရယူပါ:';
} else {
    // လှျင် Redis အဘယ်သူမျှမ cache ရလဒ်များ,query ကို query and cache ရလဒ်များကို
    $result = $mysqli->query('SELECT * FROM my_table');
    
    // စုံစမ်းမှုရလဒ်များကို serialize နှင့်သိမ်းဆည်းပါ Redis
    $redis->set($queryKey, serialize($result), 3600); // cache သက်တမ်းရှိကာလကိုသတ်မှတ်ပါ 1 နာရီ
    
    echo 'မှ MySQL ဒေတာကိုရယူပါ:';
}

// Print Query ရလဒ်များ
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "\n";
}

// 关闭ဆက်
$mysqli->close();
?>

ဒီဥပမာမှာကျွန်တော်တို့ဟာ cached query ကို redis ကနေရဖို့ကြိုးစားတယ်။ Redis တွင်ဒေတာသိုလှောင်ထားလျှင်၎င်းကိုတိုက်ရိုက်သုံးပါ။ သိုလှောင်ထားသည့်အချက်အလက်များမရှိပါကမေးခွန်းတစ်ခုကိုအကောင်အထည်ဖော်ရန်နှင့်ရလဒ်များကို redis တွင်သိုလှောင်ထားပါ။

4 ။ cache ပျက်ကွက်အချိန်သတ်မှတ်ပါ

အထူးသဖြင့်ဒေတာပြောင်းလဲသွားသည့်အခါ cache သည်အမြဲတမ်းတည်ရှိသင့်သည်။ ဒေတာအချိန်ဇယားကိုသေချာစေရန်သင် cache သက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်နိုင်သည် (အထက်ပါဥပမာတွင် 3600 စက္ကန့်) ဖြစ်သည်။ လျှောက်လွှာ၏လိုအပ်ချက်များနှင့်အညီယခုအချိန်တွင်သင်ချိန်ညှိနိုင်သည်။

cache query query ရလဒ်များအတွက်ဖိုင်စနစ်ကိုသုံးပါ

အကယ်. သင်သည် Redis ကိုမသုံးလိုပါကစုံစမ်းမှုရလဒ်များကို cache လုပ်ရန်ဖိုင်စနစ်ကိုအသုံးပြုရန်လည်းရွေးချယ်နိုင်သည်။ ဖိုင်စနစ် cache သည်အလွန်မြင့်မားသော 0 င်ရောက်နိုင်သည့်အမြန်နှုန်းမလိုအပ်သည့်အခြေအနေများအတွက်သင့်လျော်သည်။

1 ။ cache query file file ကိုရလဒ်များ

ဖိုင်စနစ်အားမည်သည့် cache query ရလဒ်များရရှိသောရလဒ်များကိုမည်သို့ပြုလုပ်နိုင်သည့်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

 <?php
// ဆက် MySQL ဒေတာဘေ့စ်
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 检查ဆက်是否成功
if ($mysqli->connect_error) {
    die('ဆက်失败: ' . $mysqli->connect_error);
}

// cached ဖိုင်လမ်းကြောင်းကိုမေးမြန်းပါ
$cacheFile = 'cache/my_query_result.cache';

// cache ဖိုင်တည်ရှိပြီးသက်တမ်းကုန်ဆုံးမနေစစ်ဆေးပါ
if (file_exists($cacheFile) && filemtime($cacheFile) > (time() - 3600)) {
    // လှျင်缓存文件存在且未过期,ဖိုင်အကြောင်းအရာကိုဖတ်ပါ
    $result = unserialize(file_get_contents($cacheFile));
    echo 'မှ文件缓存ဒေတာကိုရယူပါ:';
} else {
    // လှျင်缓存文件不存在或已过期,query ကို query and cache ရလဒ်များကို到文件
    $result = $mysqli->query('SELECT * FROM my_table');
    
    // စုံစမ်းမှုရလဒ်များကိုဖိုင်တစ်ခုသို့ဆိုင်းငံ့ထားပါ
    file_put_contents($cacheFile, serialize($result));
    echo 'မှ MySQL ဒေတာကိုရယူပါ:';
}

// Print Query ရလဒ်များ
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "\n";
}

// 关闭ဆက်
$mysqli->close();
?>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်မေးမြန်းမှုရလဒ်များကို 0 န်ဆောင်မှုပေးပြီးဖိုင်တစ်ခုသို့သိမ်းဆည်းထားသည်။ အကယ်. ဖိုင်သည်သက်တမ်းကုန်ဆုံးခြင်းမရှိပါက, ဖိုင်များမှသိမ်းဆည်းထားသောရလဒ်များကိုကျွန်ုပ်တို့တိုက်ရိုက်ဖတ်ရှုပါမည်။ မဟုတ်ရင်မေးခွန်းကိုဖိုင်ကိုလွှဲပြောင်းပြီးဖိုင်ကိုသိမ်းဆည်းပါ။

2 ။ cache သက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်ပါ

Redis နှင့်ဆင်တူသည်, ဖိုင်စနစ် cache ကိုအသုံးပြုသောအခါကျွန်ုပ်တို့သည် cache သက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်ရန်လိုအပ်သည်။ ဥပမာကုဒ်တွင် ဖိအားပေးမှု function သည်ဒေတာဘေ့စ်ကိုလိုအပ်သည်ကိုဆုံးဖြတ်ရန် Cached ဖိုင်၏နောက်ဆုံးပြင်ဆင်ခြင်းအချိန်ကိုဆုံးဖြတ်သည်။

အကျဉ်းချုပ်

MySQLI_RESult Query Query ကို Redis (သို့) ဖိုင်စနစ်များကိုသိမ်းဆည်းခြင်းအားဖြင့် PHP application များ၏စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်ပြီး database တွင်ဝန်ထုပ်ဝန်ပိုးများကိုလျှော့ချနိုင်သည်။ Redis သည်အချက်အလက်များကိုမကြာခဏ 0 င်ရောက်နိုင်သည့်အခြေအနေများအတွက်ပိုမိုသင့်တော်သည်။ မည်သည့် cache ကိုရွေးချယ်ရန်နည်းလမ်းသည်သင်၏လျှောက်လွှာ၏လိုအပ်ချက်များနှင့်ဖြန့်ကျက်မှုပတ်ဝန်းကျင်ပေါ်တွင်မူတည်သည်။

သင် Redis သို့မဟုတ်ဖိုင်စနစ် cache ကိုရွေးချယ်သည်ဖြစ်စေ, အချက်အလက်များ၏အချိန်မီနှင့်တိကျမှန်ကန်မှုကိုသေချာစေရန်အမှန်တကယ်အခြေအနေအရသင့်တင့်လျောက်ပတ်သော cache ပျက်ကွက်ချိန်ကိုသတ်မှတ်ရန်လိုအပ်သည်။