ခေတ်သစ် PHP လျှောက်လွှာဖွံ့ဖြိုးတိုးတက်မှုတွင်အမျိုးမျိုးသောဒေတာသိုလှောင်မှု၏လိုအပ်ချက်များကိုတောင်းဆိုမှုများသည်ဒေတာအရင်းအမြစ်အမျိုးအစားနှစ်မျိုး, In-Memory Database တစ်ခုအနေဖြင့် Redis သည် Cached data များကိုလျင်မြန်စွာဖတ်ရှုခြင်းနှင့်ရေးသားခြင်းသည်ကောင်းသည်။ MySQL သည် Relational Database တစ်ခုဖြစ်သော်လည်းစနစ်တကျမြဲအချက်အလက်များကိုသိုလှောင်ရန်သင့်တော်သည်။ လျှောက်လွှာတင်ခြင်းနှင့်ပြောင်းလွယ်ပြင်လွယ်တိုးတက်စေရန်အတွက် Redis နှင့် MySQL တို့အကြားထိရောက်သော switching မဟာဗျူဟာများကိုအကောင်အထည်ဖော်ရန်အထူးအရေးကြီးသည်။
ဤဆောင်းပါးသည် Connect () function မှတဆင့်ရိုးရှင်းသောနှင့်ထိရောက်သောဒေတာအရင်းအမြစ် switching switching switching switching switching soliting soliting soliting soliting soliting soliting soliting switching ဖြေရှင်းချက်ကိုဤဆောင်းပါးကရှင်းပြပါမည်။ အဓိကသော့ချက်မှာ code ကိုအတိုချုပ်နှင့်စည်းမျဉ်းစည်းကမ်းများကိုလွယ်ကူစွာလုပ်ဆောင်နိုင်စဉ်အပလီကေးရှင်းများကိုပြောင်းလွယ်ပြင်လွယ်ရွေးချယ်ရန်အတွက် applications များကို application များကို enable လုပ်ရန်ဖြစ်သည်။
ဆက်သွယ်မှု () function ကို encapsult သက်ဆိုင်ရာဒေတာဘေ့စ် connection အရာဝတ်ထုကိုပြန်ပို့ရန် parameters တွေကိုအရဆက်သွယ်မှု redis သို့မဟုတ် mySQL ကိုရွေးချယ်ပါ။
abstract interface ကိုရယူရန် Unified access ကို ရယူပါ အခြေခံဒေတာအရင်းအမြစ်တွင်ကွဲပြားခြားနားမှုများကိုပိတ်ဆို့ရန်အတွက်အချက်အလက်စစ်ဆင်ရေးနည်းလမ်းများကိုခေါ်ဆိုရန်စည်းလုံးသော interface ကိုသုံးပါ။
dynamic switching ယန္တရား <br> စီးပွားရေးမြင်ကွင်း (သို့) configuration ပေါ် မူတည်. Redis သို့မဟုတ် MySQL ကိုခေါ်ရန်မသင့်ဆုံးဖြတ်သည်။
<?php
// ဆက်သွယ်မှု function ကို,အဆိုပါ parameters တွေကိုအလိုက်ပြန်လာပါ Redis သို့မဟုတ် MySQL ဆက်
function connect(string $type = 'mysql') {
if ($type === 'redis') {
$redis = new Redis();
// ဆက် Redis,အဖြစ်ဒိုမိန်းအမည်ကိုအစားထိုးလိုက်ပါ m66.net
$redis->connect('m66.net', 6379);
return $redis;
} elseif ($type === 'mysql') {
// ဖန်တီး MySQL ဆက်,host ကိုအစားထိုးလိုက်ပါ m66.net
$mysqli = new mysqli('m66.net', 'user', 'password', 'database');
if ($mysqli->connect_error) {
die('MySQL ဆက်失败:' . $mysqli->connect_error);
}
return $mysqli;
} else {
throw new Exception("အမည်မသိဒေတာအရင်းအမြစ်အမျိုးအစား:{$type}");
}
}
// Unified Data Access အတန်းအစားဥပမာ
class DataSource {
private $conn;
private $type;
public function __construct(string $type = 'mysql') {
$this->type = $type;
$this->conn = connect($type);
}
public function get(string $key) {
if ($this->type === 'redis') {
return $this->conn->get($key);
} else {
$stmt = $this->conn->prepare('SELECT value FROM cache WHERE `key` = ?');
$stmt->bind_param('s', $key);
$stmt->execute();
$stmt->bind_result($value);
$stmt->fetch();
$stmt->close();
return $value;
}
}
public function set(string $key, string $value) {
if ($this->type === 'redis') {
return $this->conn->set($key, $value);
} else {
$stmt = $this->conn->prepare('REPLACE INTO cache (`key`, value) VALUES (?, ?)');
$stmt->bind_param('ss', $key, $value);
$result = $stmt->execute();
$stmt->close();
return $result;
}
}
}
// အသုံးပြုမှုဥပမာ
try {
// ဦး စားပေးအသုံးပြုခြင်း Redis
$cache = new DataSource('redis');
$cache->set('site_name', 'm66.net ဝဘ်0င်းက္ပုဒ်စာတမ်း');
echo $cache->get('site_name');
// လှျင် Redis မရရှိနိုင်ပါ,ခလုတ်ကိုနှိပ်ပါ MySQL
// $cache = new DataSource('mysql');
// echo $cache->get('site_name');
} catch (Exception $e) {
echo "数据源ဆက်错误:" . $e->getMessage();
}
သက်ဆိုင်သောတက်(ဂ်)များ:
MySQL