什么是PHP APCu
PHP APCu是php的一個(gè)緩存擴(kuò)展,用戶緩存
安裝APCu擴(kuò)展
使用pecl工具安裝
pecl install apcu
源碼安裝
參考:http://www.itdecent.cn/p/35092c16cd36
php.ini配置參考:https://www.php.net/manual/zh/apcu.configuration.php
相關(guān)函數(shù)
// APCu的數(shù)據(jù)存儲(chǔ)中檢索緩存的信息
apcu_cache_info();
// 檢索APCu共享內(nèi)存分配信息
apcu_sma_info();
// APCu key信息
apcu_key_info();
// 當(dāng)前環(huán)境APCu是否可用
apcu_enabled();
// 設(shè)置一個(gè)緩存,沒(méi)有失效時(shí)間。再次apcu_add()同一個(gè)key,值不會(huì)覆蓋
apcu_add();
// 刪除指定key
apcu_delete();
// 獲取指定key緩存
apcu_fetch();
// 設(shè)置一個(gè)緩存,帶有失效時(shí)間。失效后還會(huì)占用內(nèi)存空間,需使用apcu_delete()才可以徹底刪除。
apcu_store();
// 更新一個(gè)key的值
apcu_cas();
// 自增
apcu_inc();
// 自減
apcu_dec();
// 判斷key是否存在
apcu_exists();
// 以原子方式獲取或生成緩存
apcu_entry();
// 清除全部緩存
apcu_clear_cache();
實(shí)例
<?php
// 添加一個(gè)緩存,沒(méi)有失效時(shí)間。再次apcu_add()同一個(gè)key,值不會(huì)覆蓋
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的數(shù)據(jù)存儲(chǔ)中檢索緩存的信息
var_dump(apcu_cache_info());
// 檢索APCu共享內(nèi)存分配信息
var_dump(apcu_sma_info());
// key信息
var_dump(apcu_key_info("float"));
var_dump(apcu_key_info("string_store"));
// 當(dāng)前環(huán)境apcu是否可用
var_dump(apcu_enabled());
// 刪除指定key
var_dump(apcu_delete("bool"));
// 設(shè)置一個(gè)緩存,失效時(shí)間單位為秒。時(shí)間可選,默認(rèn)永不失效(非重啟)
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));
// 更新一個(gè)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);
// 自減,可以為負(fù)數(shù)
apcu_add("dec", 100);
$success = false;
var_dump(apcu_dec("dec", 10, $success));
apcu_fetch("dec");
var_dump($success);
// 判斷key是否存在,當(dāng)參數(shù)為數(shù)組時(shí)返回?cái)?shù)組,數(shù)組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());