当前位置:首页 > PHP

php实现缓存代码

2026-03-13 11:26:29PHP

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算法。

php实现缓存代码

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适合单机高性能需求。

标签: 缓存代码
分享给朋友:

相关文章

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,包括边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin…

php实现文件下载代码

php实现文件下载代码

实现文件下载的基本方法 使用PHP实现文件下载的核心是通过设置HTTP头部信息,强制浏览器触发下载行为而非直接显示文件内容。 $file_path = 'path/to/your/file.ext'…

vue实现缓存视频

vue实现缓存视频

Vue 实现视频缓存的方法 在 Vue 中实现视频缓存可以通过多种方式完成,包括使用浏览器的缓存机制、Service Worker 或者借助第三方库。以下是几种常见的方法: 使用 Service W…

vue怎么实现路由缓存

vue怎么实现路由缓存

Vue 实现路由缓存的方法 使用 <keep-alive> 组件 在 Vue 中,可以通过 <keep-alive> 组件实现路由缓存。该组件会缓存不活动的组件实例,避免重复渲…

vue实现左右滑动代码

vue实现左右滑动代码

以下是一个基于 Vue 3 实现左右滑动功能的代码示例,结合手势识别和动画效果: 基础实现(使用 CSS 和事件监听) <template> <div class="sli…

vue动画实现代码

vue动画实现代码

Vue 动画实现代码示例 Vue 提供了内置的过渡和动画支持,主要通过 <transition> 和 <transition-group> 组件实现。以下是常见的动画实现方式:…