php实现缓存代码
PHP 缓存实现方法
文件缓存
文件缓存是最简单的缓存方式,适合小型项目或临时数据存储。
// 设置缓存
function setCache($key, $data, $expire = 3600) {
$cacheFile = 'cache/' . md5($key) . '.cache';
$cacheData = [
'expire' => time() + $expire,
'data' => $data
];
file_put_contents($cacheFile, serialize($cacheData));
}
// 获取缓存
function getCache($key) {
$cacheFile = 'cache/' . md5($key) . '.cache';
if (!file_exists($cacheFile)) return false;
$cacheData = unserialize(file_get_contents($cacheFile));
if (time() > $cacheData['expire']) {
unlink($cacheFile);
return false;
}
return $cacheData['data'];
}
// 删除缓存
function deleteCache($key) {
$cacheFile = 'cache/' . md5($key) . '.cache';
if (file_exists($cacheFile)) {
unlink($cacheFile);
}
}
Memcached 缓存
Memcached 是高性能的分布式内存对象缓存系统。
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
// 设置缓存
$memcached->set('key', 'value', 3600);
// 获取缓存
$value = $memcached->get('key');
// 删除缓存
$memcached->delete('key');
Redis 缓存
Redis 是更强大的键值存储系统,支持更多数据结构。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 设置缓存
$redis->set('key', 'value');
$redis->expire('key', 3600);
// 获取缓存
$value = $redis->get('key');
// 删除缓存
$redis->del('key');
APC/APCu 缓存
APCu 是 PHP 的本地缓存扩展,适合单服务器环境。
// 设置缓存
apcu_store('key', 'value', 3600);
// 获取缓存
$value = apcu_fetch('key');
// 删除缓存
apcu_delete('key');
数据库查询缓存
对频繁查询的数据库结果进行缓存。
function getProducts($category) {
$cacheKey = 'products_' . $category;
if ($data = getCache($cacheKey)) {
return $data;
}
$data = queryDatabaseForProducts($category);
setCache($cacheKey, $data, 3600);
return $data;
}
页面片段缓存
缓存页面中计算量大的部分。
function cacheFragment($key, $callback, $expire = 3600) {
if ($data = getCache($key)) {
echo $data;
return;
}
ob_start();
call_user_func($callback);
$content = ob_get_clean();
setCache($key, $content, $expire);
echo $content;
}
缓存清理策略
定期清理过期缓存或实现LRU算法。

function cleanExpiredCache() {
$files = glob('cache/*.cache');
foreach ($files as $file) {
$cacheData = unserialize(file_get_contents($file));
if (time() > $cacheData['expire']) {
unlink($file);
}
}
}
以上方法可根据项目需求单独或组合使用,文件缓存适合简单场景,Memcached/Redis适合分布式系统,APCu适合单机高性能需求。






