//接続するRedis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//キャッシュが存在するかどうかを判断します
if ($redis->exists('data_cache')) {
$data = $redis->get('data_cache');
} else {
//データベースからデータを取得します
$data = $db->query('SELECT * FROM table');
//データをキャッシュに保存します
$redis->set('data_cache', serialize($data));
}
//使用データ
foreach ($data as $row) {
//データの処理
}
インデックスの使用:高周波クエリフィールドにインデックスを追加します。
内部接続の最適化:冗長データクエリを削減します。
マージリクエスト:クエリで同時に読み取る複数のレコードを実現します。
サンプルコードは、推奨されていない推奨クエリメソッドを比較します。
//複数の問い合わせ(お勧めしません)
foreach ($ids as $id) {
$row = $db->query('SELECT * FROM table WHERE id = '.$id);
//データの処理
}
//バッチクエリ(推薦する)
$ids = implode(',', $ids);
$rows = $db->query('SELECT * FROM table WHERE id IN ('.$ids.')');
foreach ($rows as $row) {
//データの処理
}
function load_css(){
$css_file = 'style.css';
$cache_file = md5($css_file).'.css';
//キャッシュが存在するかどうかを判断します
if(file_exists($cache_file)){
include $cache_file;
} else {
ob_start();
include $css_file;
$content = ob_get_clean();
//圧縮CSS
$content = compress_css($content);
//キャッシュされたファイルを保存します
file_put_contents($cache_file, $content);
//出力コンテンツ
echo $content;
}
}
データベース接続を閉じます
オブジェクトへの循環参照は避けてください
//タイムリーにリソースをリリースします
$db->close();
//円形の参照は避けてください
class A {
public $b;
}
class B {
public $a;
}
$a = new A();
$b = new B();
$a->b = $b;
$b->a = $a;