APCu 的安装就和普通的 PHP 扩展一样,非常大略,最紧张的是这个扩展还非常的小。不管下载还是安装都是秒级可以完成的。以是说能够非常方便的运用于小规模的项目,而且是 PHP 原生支持的,不须要额外的端口之类的配置。
方法解释缓存系统一样平常都会有的增加、删除、查询、自增等功能都在 APCu 扩展中有对应的实现。
apcu_add — 创建一个新的缓存apcu_cache_info — 查看 APCu 的全部缓存信息apcu_cas — 更新一个缓存的值为新值apcu_clear_cache — 打消全部的缓存apcu_dec — 自减缓存值apcu_delete — 删除一个缓存的内容apcu_enabled — 当前环境下是否启用 APCu 缓存apcu_entry — 原子地天生一个缓存实体apcu_exists — 检讨缓存是否存在apcu_fetch — 查询缓存apcu_inc — 自增缓存值apcu_sma_info — 查询缓存的共享内存信息apcu_store — 保存一个缓存利用演示apcu_add("int",1);apcu_add("string","I'mString");apcu_add("arr",[1,2,3]);classA{private$apc=1;functiontest(){echo"s";}}apcu_add("obj",newA);var_dump(apcu_fetch("int"));var_dump(apcu_fetch("string"));var_dump(apcu_fetch("arr"));var_dump(apcu_fetch("obj"));
正常的利用都是比较大略的,我们添加各种类型的数据都可以正常存入缓存。不过须要把稳的是,我们可以直接保存工具进入 APCu 缓存中,不须要将它序列化或者JSON成字符串,系统会自动帮我们序列化。
apcu_add(string \$key , mixed $var [, int $ttl = 0 ]) 方法便是普通的添加一个缓存,$ttl 可以设置过期韶光,也因此秒为单位,如果不设置便是长期有效的。把稳,APCu 的缓存时限在一次 CLI 中有效,再调用一次 CLI 取不到上次 CLI 中设置的缓存内容。而在 PHP-FPM 中,重启 PHP-FPM 或 FastCGI 之后缓存会失落效。
接下来我们重点测试一下几个不太常见的方法。
apcu_cas("int",1,2);var_dump(apcu_fetch("int"));//Warningapcu_cas()expectsparameter2tobeintapcu_cas("string","I'mString","I'mNewString");
apcu_cas(string $key , int $old , int $new) 是将一个 $old 值修正为 $new 值,它只能修正数字类型的内容,如果是字符串的修正会报错。这个函数有什么上风呢?它最大的上风是原子性的,也便是不受高并发的影响。与之类似的是 apcu_store(string $key , mixed $var [, int $ttl = 0 ]) 方法,不过这个方法只是大略的修正一个缓存的内容,如果这个缓存的键不存在的话,就新建一个,它不受类型的限定,当然也不具有原子性。
apcu_entry("entry",function($key){return"Thisis".$key;});var_dump(apcu_fetch("entry"));
apcu_entry(string $key , callable $generator [, int $ttl = 0 ]) 这个函数的浸染是如果 $key 这个缓存不存在,则实行 $generator 这个匿名函数,并将 $key 做为键值通报进去,然后天生也便是 return 一个内容做为这个缓存的值。
var_dump(apcu_cache_info());
末了,如果我们想查看当前系统中的所有 APCu 缓存信息的时候,直接用这个 apcu_cache_info() 函数即可。
总结当缓存中的数据非常多时,它还供应了一个 APCUIterator 迭代器方便我们进行缓存信息的循环查询及干系统计。总之,这一套系统是非常方便的一套小规模的缓存系统,在日常开拓中完备可以考试测验用到一些小功能上。
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/%E6%88%91%E4%BB%AC%E4%B9%9F%E6%9C%89%E8%87%AA%E5%B8%A6%E7%9A%84%E7%BC%93%E5%AD%98%E7%B3%BB%E7%BB%9F%EF%BC%9APHP%E7%9A%84APCu%E6%89%A9%E5%B1%95.php
参考文档:
https://www.php.net/manual/zh/function.apcu-entry.php