php 缓存实现
PHP 缓存实现方法
文件缓存
文件缓存是最简单的缓存方式,适合小型应用或临时数据存储。通过将数据序列化后写入文件,读取时反序列化即可。
// 写入缓存
$data = ['key' => 'value'];
file_put_contents('cache.data', serialize($data));
// 读取缓存
$cachedData = unserialize(file_get_contents('cache.data'));
Memcached
Memcached 是分布式内存对象缓存系统,适合高并发场景。
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
// 设置缓存
$memcached->set('key', 'value', 3600);
// 获取缓存
$value = $memcached->get('key');
Redis
Redis 是高性能的键值存储系统,支持多种数据结构。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 设置缓存
$redis->set('key', 'value', ['ex' => 3600]);
// 获取缓存
$value = $redis->get('key');
OPcache
OPcache 是 PHP 内置的字节码缓存,能显著提升 PHP 性能。
; php.ini 配置
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
APCu
APCu 是用户数据缓存,适合存储 PHP 变量。
// 存储缓存
apcu_store('key', 'value', 3600);
// 获取缓存
$value = apcu_fetch('key');
数据库查询缓存
对于频繁查询的数据库结果可以缓存。
$cacheKey = 'user_123';
if (!apcu_exists($cacheKey)) {
$userData = $db->query('SELECT * FROM users WHERE id = 123')->fetch();
apcu_store($cacheKey, $userData, 3600);
}
$user = apcu_fetch($cacheKey);
HTTP 缓存
通过 HTTP 头控制浏览器缓存。
header('Cache-Control: max-age=3600, public');
header('Expires: '.gmdate('D, d M Y H:i:s', time() + 3600).' GMT');
模板缓存
模板引擎如 Twig 和 Smarty 都支持缓存编译后的模板。
// Twig 配置
$twig = new \Twig\Environment($loader, [
'cache' => '/path/to/cache',
]);
选择合适的缓存方法取决于应用规模、性能需求和基础设施。文件缓存简单但性能有限,Memcached/Redis 适合分布式系统,OPcache 能提升 PHP 本身性能。通常项目中会组合使用多种缓存策略。







