//연결하다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;