当前位置:首页 > 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 是更强大的键值存储系统,支持更多数据结构。

php实现缓存代码

$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');

数据库查询缓存

对频繁查询的数据库结果进行缓存。

php实现缓存代码

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

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

相关文章

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project c…

代码实现vue

代码实现vue

安装Vue.js 通过npm或yarn安装Vue.js最新稳定版本。确保已安装Node.js环境。 npm install vue # 或 yarn add vue 创建Vue实例 在HTML文件中…

vue实现商品列表代码

vue实现商品列表代码

以下是一个基于Vue.js的商品列表实现示例,包含基础功能如数据渲染、分页和筛选: 基础商品列表渲染 <template> <div class="product-list"&…

vue 实现git代码对比

vue 实现git代码对比

Vue 实现 Git 代码对比 在 Vue 中实现 Git 代码对比功能,可以通过集成现有的代码对比库或调用 Git 相关 API 来实现。以下是几种常见的方法: 使用 diff2html 库 di…

vue实现左右滑动代码

vue实现左右滑动代码

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

vue长轮询代码实现

vue长轮询代码实现

Vue 长轮询实现方法 长轮询(Long Polling)是一种服务器推送技术,客户端发送请求后,服务器保持连接开放直到有新数据或超时。以下是 Vue 中实现长轮询的代码示例。 基本实现逻辑 定义一…