PHP APCu

什么是PHP APCu

PHP APCu是php的一个缓存扩展,用户缓存

安装APCu扩展

使用pecl工具安装

pecl install apcu

源码安装
参考:https://www.jianshu.com/p/35092c16cd36
php.ini配置参考:https://www.php.net/manual/zh/apcu.configuration.php

相关函数

// APCu的数据存储中检索缓存的信息
apcu_cache_info();

// 检索APCu共享内存分配信息
apcu_sma_info();

// APCu key信息
apcu_key_info();

// 当前环境APCu是否可用
apcu_enabled();

// 设置一个缓存,没有失效时间。再次apcu_add()同一个key,值不会覆盖
apcu_add();

// 删除指定key
apcu_delete();

// 获取指定key缓存
apcu_fetch();

// 设置一个缓存,带有失效时间。失效后还会占用内存空间,需使用apcu_delete()才可以彻底删除。
apcu_store();

// 更新一个key的值
apcu_cas();

// 自增
apcu_inc();

// 自减
apcu_dec();

// 判断key是否存在
apcu_exists();

// 以原子方式获取或生成缓存
apcu_entry();

// 清除全部缓存
apcu_clear_cache();

实例

<?php
// 添加一个缓存,没有失效时间。再次apcu_add()同一个key,值不会覆盖
apcu_add("bool", false);
apcu_add("string", "string");
apcu_add("int", 999);
apcu_add("float", 99.99);
apcu_add("array", [1, 2, 3, 4, 5]);

// APCu的数据存储中检索缓存的信息
var_dump(apcu_cache_info());

// 检索APCu共享内存分配信息
var_dump(apcu_sma_info());

// key信息
var_dump(apcu_key_info("float"));
var_dump(apcu_key_info("string_store"));

// 当前环境apcu是否可用
var_dump(apcu_enabled());

// 删除指定key
var_dump(apcu_delete("bool"));

// 设置一个缓存,失效时间单位为秒。时间可选,默认永不失效(非重启)
var_dump(apcu_store("bool_store", FALSE, 5));
var_dump(apcu_store("string_store", "string", 10));
var_dump(apcu_store("int_store", 999, 15));
var_dump(apcu_store("float_store", 99.99, 20));
var_dump(apcu_store("array_store", [1, 2, 3, 4, 5], 25));

// 更新一个key的值
$old = 1;
$new = 2;
apcu_add("cas", $old);
var_dump(apcu_cas("cas", $old, $new));

// 自增
apcu_add("inc", 1);
$success = false;
var_dump(apcu_inc("inc", 10, $success));
apcu_fetch("inc");
var_dump($success);

// 自减,可以为负数
apcu_add("dec", 100);
$success = false;
var_dump(apcu_dec("dec", 10, $success));
apcu_fetch("dec");
var_dump($success);

// 判断key是否存在,当参数为数组时返回数组,数组key为APCu缓存的key,值为bool类型true或false
apcu_add("int", 1);
apcu_add("string", "string");
var_dump(apcu_exists("int"));
var_dump(apcu_exists(["int", "string"]));

// 以原子方式获取或生成缓存
$entry = apcu_entry("entry", function ($key) {
    return ["entry" => "this is entry"];
}, 100);
var_dump($entry);
$success = false;
var_dump(apcu_fetch("entry", $success));
var_dump($success);

// 清除全部缓存
var_dump(apcu_clear_cache());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是长连接,长连接的意义 php 作为 server 对外提供服务, 每次处理新的请求都会重头运行一次代码 ...
    马六甲的笔记阅读 4,117评论 1 0
  • php 扩展主要分为两类: php模块扩展和zend模块扩展。 php模块扩展 bz2 用于透明地读写 bzip...
    Jaxh阅读 10,092评论 0 2
  • 环境 : CentOS 7.7丶Docker 19.03.4丶Nginx 1.17.5丶PHP 7.3.11 安装...
    x0e阅读 6,625评论 0 2
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_阅读 5,852评论 0 3
  • Welcome 目前网络上充斥着大量的陈旧信息,让PHP新手误入歧途,传播着错误的实践和糟糕的代码,这必须得到纠正...
    layjoy阅读 21,779评论 7 118