// Connect to Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// Check if cache exists
if ($redis->exists('data_cache')) {
$data = $redis->get('data_cache');
} else {
// Fetch data from database
$data = $db->query('SELECT * FROM table');
// Store data in cache
$redis->set('data_cache', serialize($data));
}
// Use data
foreach ($data as $row) {
// Process data
}
Use Indexes: Index frequently queried fields to enhance search speed.
Use Inner Joins: Simplify queries and reduce load.
Batch Queries: Replace multiple queries with a single IN statement.
Below is a comparison between inefficient and optimized queries:
// Multiple queries (not recommended)
foreach ($ids as $id) {
$row = $db->query('SELECT * FROM table WHERE id = '.$id);
// Process data
}
// Batch query (recommended)
$ids = implode(',', $ids);
$rows = $db->query('SELECT * FROM table WHERE id IN ('.$ids.')');
foreach ($rows as $row) {
// Process data
}
function load_css(){
$css_file = 'style.css';
$cache_file = md5($css_file).'.css';
// Check if cache exists
if(file_exists($cache_file)){
include $cache_file;
} else {
ob_start();
include $css_file;
$content = ob_get_clean();
// Compress CSS
$content = compress_css($content);
// Save cached file
file_put_contents($cache_file, $content);
// Output content
echo $content;
}
}
Release Resources: Close database connections and file handlers when done.
Avoid Circular References: Be cautious with objects that reference each other.
// Release resources properly
$db->close();
// Avoid circular references
class A {
public $b;
}
class B {
public $a;
}
$a = new A();
$b = new B();
$a->b = $b;
$b->a = $a;