php缓存实现
PHP缓存实现方法
文件缓存
文件缓存是最简单的缓存方式,将数据存储在文件中。适合小型项目或临时缓存需求。
$cacheFile = 'cache/data.cache';
$cacheTime = 3600; // 1小时
if (file_exists($cacheFile) && time() - filemtime($cacheFile) < $cacheTime) {
$data = file_get_contents($cacheFile);
} else {
$data = getDataFromDatabase(); // 假设的数据库获取函数
file_put_contents($cacheFile, $data);
}
Memcached缓存
Memcached是高性能分布式内存缓存系统,适合大规模应用。
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
$key = 'user_data';
$data = $memcached->get($key);
if (!$data) {
$data = getDataFromDatabase();
$memcached->set($key, $data, 3600); // 缓存1小时
}
Redis缓存
Redis是更高级的键值存储系统,支持更多数据结构类型。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = 'product_list';
if (!$redis->exists($key)) {
$data = getProductsFromDB();
$redis->setex($key, 3600, serialize($data)); // 缓存1小时
} else {
$data = unserialize($redis->get($key));
}
OPcache缓存
PHP内置的OPcache可以缓存编译后的脚本字节码,提升执行效率。
在php.ini中配置:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
浏览器缓存控制
通过HTTP头控制浏览器缓存行为。
header("Cache-Control: max-age=3600, public");
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 3600)." GMT");
缓存策略注意事项
- 设置合理的过期时间,平衡新鲜度和性能
- 对敏感数据谨慎使用缓存
- 实现缓存清除机制,数据变更时及时更新
- 考虑缓存命名空间,避免键冲突
- 监控缓存命中率,优化缓存策略
不同的缓存方法适用于不同场景,应根据项目规模、性能需求和基础设施选择最合适的方案。大型项目通常会组合使用多种缓存技术。







