//连接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) {
//处理数据
}
使用索引:为高频查询字段添加索引。
内连接优化:减少冗余数据查询。
合并请求:通过 IN 查询实现多条记录同时读取。
示例代码对比了不推荐与推荐的查询方式:
//多次查询(不推荐)
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;