当前位置: 首页 > 工具软件 > Yac > 使用案例 >

php7.0扩展yac,php的yac拓展详解

令狐翰
2023-12-01

介绍

yac拓展的作用是php进程之间共享数据缓存。这里我们不探讨如何安装yac拓展,而是探讨其详细用法。这篇文章的参考资料有鸟哥那篇yac拓展的文章与yac拓展github的描述。

注意事项

因为是php进程之间共享,所以它是单机的缓存,多台机器时还是用memcached或者redis更好。但是它可以和redis等形成互补,比如当缓存key比较大,使用又频繁,将缓存迁移到yac降低redis的压力。

yac是无锁的缓存,所以要尽量避免多个进程设置相同key。同时它还意味着有可能获取cache的时候拿到错误的数据,取决于分配了多少密钥槽和存储了多少密钥, 1/10000000(千万分之一)的概率会发生。

Yac使用部分crc校验,最好重新安排你的缓存内容,把最易变的字节放在头或尾。

使用限制

key名的长度不能超过48(YAC_MAX_KEY_LEN常量),如果key长度超过了,使用md5即可

value值不能超过64M(YAC_MAX_VALUE_RAW_LEN常量)

压缩后的value值不能超过1M(YAC_MAX_VALUE_COMPRESSED_LEN常量)

相关方法

看github就行了,github.com/laruence/ya…

需要说明的几点:

1.是可以一次性设置多个key的,但他们的过期时间都是一样的。

2.没有获取key过期时间的方法

3.flush方法,并不会释放任何资源,只是将所有项标记为无效

info方法返回的值的含义

Array

(

[memory_size] => 71303168

[slots_memory_size] => 4194304

[values_memory_size] => 67108864

[segment_size] => 4194304

[segment_num] => 16

[miss] => 23

[hits] => 90

[fails] => 0

[kicks] => 0

[recycles] => 0

[slots_size] => 32768

[slots_used] => 17

)

复制代码

1.miss代表没有命中的次数,hits缓存命中的次数,slots_size是key slot个数,也就是能存多少key,slots_used是已使用的key slot数,也就是当前key的个数。

2.memory_size:yac总共占用的内存,默认68M,slots_memory_size:key槽占用的内存默认4M,配置yac.keys_memory_size = 4M,4M有30K的key槽, 32M有100K的key槽,values_memory_size:value值占用的内存,配置yac.values_memory_size = 64M,默认64M,单位都是byte。 3.kicks被踢出的次数,recycles内存重新分配的次数。

参考

 类似资料: