php

APCu 相关记录

一、APCu 是什么

APCu 全称 Alternative PHP Cache User,是一个 PHP 内存缓存扩展。

它的作用是:

把经常用到的数据直接缓存在 服务器内存(RAM) 里,

这样 PHP 脚本可以从内存中直接读取,而不用再去读文件或访问数据库。

简单理解:

Redis 是跨语言、跨进程的独立缓存服务器;

APCu 是 PHP 自带的、轻量级的“本地内存缓存”。


二、APCu 的特点

速度极快:因为它直接在 PHP 的内存空间里存取数据,没有网络通讯延迟。

零配置、无依赖:装好扩展即可使用,不需要独立服务。

适合保存轻量数据,比如:

网站配置(config.php 的数据结构)

路由表、菜单、字典

小规模的缓存查询结果

数据保存在 PHP-FPM 进程内存中:

每个进程的缓存独立,不会自动同步。


三、典型用法

// 存入缓存
apcu_store('site_config', $config_array);
// 获取缓存
$config = apcu_fetch('site_config');
// 删除缓存
apcu_delete('site_config');
// 检查缓存是否存在
if (apcu_exists('site_config')) {
    echo "缓存命中";
}

用法非常简单,就像操作一个数组一样。


四、使用场景举例

网站初始化时读取配置文件(config.php),

然后存入 APCu,后续所有请求都从内存中取,避免频繁 I/O。

结合 opcache,让 PHP 文件本身不再重复编译,

两者搭配能让纯 PHP 项目性能接近静态化站点。


五、与其他缓存的比较

特性 APCu Redis 文件缓存

存储位置 内存(PHP进程内) 内存(独立服务) 硬盘

速度 极快 快 较慢

是否持久化 否 可选 是

是否跨进程 否 是 是

适用场景 配置、字典、轻缓存 全站缓存、共享数据 静态缓存、日志类

是否需安装服务 否 是 否

简单总结:

APCu 是“单机小缓存”,

Redis 是“多站共用缓存”。

两者可以同时存在,互不冲突。


六、常见问题

重启 PHP 会丢缓存吗?

会。APCu 是内存缓存,进程结束就清空。

多网站可以共用 APCu 吗?

可以,但要理解其原理:

每个站点、每个 PHP-FPM 进程的 APCu 内存都是独立的。

如果你想实现“看似共用”的效果,可以这样设计:

访问时,先尝试从 APCu 读取;

如果没有,就从文件读取配置

读取成功后再写入 APCu。

这样只需几个请求,就能让所有进程都“自动热启动”出同样的缓存数据。

对配置这类读多改少的内容来说,这种方式既简单又高效。


缓存没命中有影响吗?

没影响。配置文件兜底就行,多几次访问自然会填满所有进程的缓存。


七、小结


APCu 就像是 PHP 的“小口袋”,

放点常用小东西(配置、数组、查询结果)非常方便。

不占资源、不费事,还能明显减少文件读取次数。

如果是单机网站、配置稳定,APCu 是非常实用的选择;

如果是多站点或分布式架构,再考虑用 Redis 替代。


编辑:千欧中软

阅读量:10

url链接:https://www.qozr.com/cms_apcu-xiang-guan-ji-lu.html

Tag标签: APCu , php , Redis

更多新闻

Copyright © 千欧中软 版权所有 www.qozr.com seo | 网站建设 [渝ICP备15005074号] 渝公网安备50011802011077 | sitemap