php共享缓存Yac怎么使用


这篇“php共享缓存Yac怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php共享缓存Yac怎么使用”文章吧。 yac 缓存Yac 是用于 PHP 的共享和无锁内存用户数据缓存。它可以用来替换 APC 或本地 memcached。要求PHP 7 +Install

$/path/to/phpize
$./configure--with-php-config=/path/to/php-config
$make&&makeinstall

NoteYac 是无锁缓存,您应该尽量避免或减少多个进程设置一个相同键的概率Yac 使用部分 crc,您最好重新排列缓存内容,将最重要 (可变) 的字节放在头部或尾部Restrictions缓存 key 不能大于 48 (YAC_MAX_KEY_LEN) bytes缓存内容不能大于 64M (YAC_MAX_VALUE_RAW_LEN) bytes压缩后的缓存值不能大于 1M 1M (YAC_MAX_VALUE_COMPRESSED_LEN) bytesini 配置

yac.enable=1
yac.keys_memory_size=4M;4Mcanget30Kkeyslots,32Mcanget100Kkeyslots
yac.values_memory_size=64M
yac.compress_threshold=-1
yac.enable_cli=0;是否使用cli启用yac,默认为0
yac.serializer=php;yac2.2.0以来,yac使用的特定seralizerjson(--enable-json)、msgpack(--enable-msgpack)或igbinary(--enable-igbinary)

常量

YAC_VERSION
YAC_MAX_KEY_LEN=48;ifyourkeyislongerthanthis,maybeyoucanusemd5resultasthekey
YAC_MAX_VALUE_RAW_LEN=64M
YAC_MAX_VALUE_COMPRESSED_LEN=1M
YAC_SERIALIZER_PHP=0;sinceyac-2.2.0
YAC_SERIALIZER_JSON=1;sinceyac-2.2.0
YAC_SERIALIZER_MSGPACK=2;sinceyac-2.2.0
YAC_SERIALIZER_IGBINARY=3;sinceyac-2.2.0
YAC_SERIALIZER;serializeraccordingtoyac.serializer,defaultisYAC_SERIALIZER_PHP

注意 cli 下会出现的问题如果 cli情况下 一定ini配置开启cli-enable

set([1,2,3,5,6]);
//获取缓存
$a=$cache->get();


//备注1.由于yac的缓存是共享的,所以在多个项目中使用时,需要注意key的唯一性,否则会出现缓存覆盖的情况
//备注2.由于cli在执行后会自动退出,所以在cli中使用时,需要注意缓存的有效期,当再次执行时候换存是拿不到的
//例如

//例
//step1
set([1,2,3,5,6]);
//phpstep1.php//执行后会自动退出,缓存失效

get();
var_dump($arr);//空
//phpstep2.php//执行事后上一个进程已经退出,所以缓存失效

方法Yac::__construct

Yac::__construct([string$prefix=""])

Yac 的构造函数,您可以指定一个前缀,该前缀将用于在执行设置 / 获取 / 删除时预先添加到任何键

Yac::set

Yac::set($key,$value[,$ttl=0])
Yac::set(array$kvs[,$ttl=0])

将一个值存储到 Yac 缓存中,键是缓存唯一的,因此使用相同的键存储第二个值将覆盖原始值。成功时返回 true,错误时返回 false (如无内存,无法获得 cas write right)

set("foo","bar");
$yac->set(
array(
"dummy"=>"foo",
"dummy2"=>"foo",
)
);
?>

Note:如 Yac 2.1,如果 cas 竞争失败,可能会失败,您可能需要执行以下操作:

while(!($yac->set("important","value")));

Yac::get

Yac::get(array|string$key[,&$cas=NULL])

从缓存中获取存储变量。如果一个数组被传递,那么每个元素都被获取并返回。成功时返回值,错误时返回 false

set("foo","bar");
$yac->set(
array(
"dummy"=>"foo",
"dummy2"=>"foo",
)
);
$yac->get("dummy");
$yac->get(array("dummy","dummy2"));
?>

Yac::delete

Yac::delete(array|string$keys[,$delay=0])

从缓存中删除存储的变量。如果指定了延迟,则该值将在 $delay 秒后删除。Yac::flush

Yac::flush()

立即使所有现有项目无效。它实际上并没有释放任何资源,它只将所有项目标记为无效。Yac::info

Yac::info(void)

获取缓存信息

info());
/*willreturnanarraylike:
array(11){
["memory_size"]=>int(541065216)
["slots_memory_size"]=>int(4194304)
["values_memory_size"]=>int(536870912)
["segment_size"]=>int(4194304)
["segment_num"]=>int(128)
["miss"]=>int(0)
["hits"]=>int(955)
["fails"]=>int(0)
["kicks"]=>int(0)
["slots_size"]=>int(32768)
["slots_used"]=>int(955)
}
*/

isEnable=false;
thrownewRuntimeException('yac扩展不存在!');
}
if(!$key){
thrownewRuntimeException('key不能为空!');
}
$this->key=md5($key);
}
/**
*
*获取共享内存块的值。
*/
publicfunctionget()
{
if($this->isEnable){
return(newYac('db_'))->get($this->key);
}
thrownewRuntimeException('yacisnotenable,skipgetCache');
}
/**
*
*设置共享内存块的值。
*/
publicfunctionset($var):bool
{
if($this->isEnable){
return(newYac('db_'))->set($this->key,$var,3600);
}
thrownewRuntimeException('yacisnotenable,skipsetCache');
}
/**
*
*删除共享内存块的值。
*/
publicfunctiondel():bool
{
if($this->isEnable){
return(newYac('db_'))->delete($this->key)免费云主机域名;
}
thrownewRuntimeException('yacisnotenable,skipdelCache');
}
/**
*
*获取共享内存块的信息。
*/
publicfunctioninfo():array
{
if($this->isEnable){
return(newYac('db_'))->info();
}
thrownewRuntimeException('yacisnotenable,skipinfo');
}
/**
*
*清空共享内存块的值。
*/
publicfunctionflush():bool
{
if($this->isEnable){
return(newYac)->flush();
}
thrownewRuntimeException('yacisnotenable,skipflush');
}
}

以上就是关于“php共享缓存Yac怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: JS前端并发多个相同的请求怎么控制为只发一个请求

这篇文章主要讲解了“JS前端并发多个相同的请求怎么控制为只发一个请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS前端并发多个相同的请求怎么控制为只发一个请求”吧!同时发多个相同的请求,如果第一个请求成功,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/17 21:02
下一篇 05/18 09:37

相关推荐