这篇“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举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。