众所周知高性能的缓存组件有Redis和Memcached.
Redis每秒可以处理上万请求. 适合作为缓存一些热点数据. 根据二八定律 我们可以将Mysql中20%的热点数据存入Redis.
Redis存入的数据也按照二八定律,其中20%的热点中的热点数据我们可以存入程序内.当然PHP不是很好实现.好在有Swoole这种优秀的扩展出现,
但是今天的主角不是它.
下面让我隆重介绍下今天的主角 - APCu
扩展下载地址: http://pecl.php.net/package/APCu
在PHP5版本用的是APC,PHP7之后就是APCU.它俩是同一东西.在php.ini的配置项中都以apc开头.
不过只支持FastCGI模式.PHP-CLI下会失效.需要注意!
它和Memcached很相似.只能存入key-value类型.
apcu_add('key', 'value'); // 添加数据
apcu_fetch('key'); // 读取数据
复制代码
还有很多命令,我们今天只以这两条为主.
更详细的介绍和配置可以访问官网:
https://www.php.net/manual/zh/apcu.configuration.php
它的缓存生命周期是整个PHP-FPM.当重启PHP-FPM时候才会清空.也就是说可以在同一PHP-FPM环境下跨文件和跨项目的使用它.
Redis在传输数据会使用网络模型.大大增加的时间.而这也是真正高并发业务的瓶颈之一.下面我们来测试下APCu和Redis的性能差
测试的服务器: 阿里云2核4G
PHP版本: 7.2.25
首先先编写一个写入数据的程序,记得在浏览器下访问一下.
// 文件名: set_data.php
$redis = new