PHP基于APC的单机缓存
APC cache
APC (Alternative PHP Cache),PHP缓存,手册里翻译:它的目标是为缓存和优化PHP中间代码提供一个免费,开放,健壮的框架。
了解PHP架构知道,Zend 引擎经过词法分析等操作把PHP编译成opcode,再执行opcode。
APC 的作用就是把opcode缓存起来到共享内存,省去一遍一遍翻译脚本,更快执行。
PHP我们常见的情况,都是一次web请求结束,资源释放了,这也是脚本语言的特性。有些场景,我们又希望能缓存一些数据,这样多次会话可以共享。
通常现在都是Redis包打天下了,分布式高性能。APC用的戏份不多了。简单对比两者部署情况可以发现,Redis通常是部署网络,和web应用服务器是隔离的,走网络请求后再操作。而APC这时候有一些优势,php服务单机缓存【缓存到PHP服务进程,比如nginx+php-fpm,如果重启php-fpm,apc缓存就不在了】。
用户自己在PHP中缓存一些配置、数据当然也是可以的,比如我们加载一个词典,每台机器部署也是很常见的。
APC 这种用法和Java操作Caffeine Cache一样,都是进程内缓存。
比如下面常用的几个方法(APC 自带锁,也是线程安全的)。
demo
apc_store('a', 'val1');// 存储 k=>v
apc_delete('b');// 删除
if (apc_exists('b')) {// key是否存在
var_dump('b exists');
} else {
var_dump('b not exists');
apc_store('b', 'val2');
}
$ret = apc_exists(array('a', 'b'));// 接受数组
var_dump($ret);
$val = apc_fetch('a');// 获取
var_dump($val);