이 기사는 php+yac에 대한 관련 지식을 제공합니다. 주로 APCU memcache를 Yac으로 대체하는 방법에 대해 설명합니다. 관심 있는 친구는 아래를 살펴보는 것이 모든 사람에게 도움이 되기를 바랍니다.
yac 캐시
Yac는 PHP용 공유 및 잠금 방지 메모리 사용자 데이터 캐시입니다. APC 또는 로컬 memcached를 대체하는 데 사용할 수 있습니다. Niao Ge의 제품은 고품질이어야 합니다
Requirements
PHP 7 +
Install
$/path/to/phpize $./configure --with-php-config=/path/to/php-config $make && make install
Note
Yac은 잠금이 없는 캐시이므로 여러 프로세스를 피하거나 줄여야 합니다. 동일한 키 설정 확률
Yac 부분 crc를 사용하면 가장 중요한(가변) 바이트를 헤드 또는 테일에 배치하도록 캐시 내용을 재배열하는 것이 좋습니다
Restrictions
캐시 키 48(YAC_MAX_KEY_LEN)바이트보다 클 수 없습니다
캐시 콘텐츠는 64M(YAC_MAX_VALUE_RAW_LEN)바이트보다 클 수 없습니다
압축된 캐시 값은 1M 1M(YAC_MAX_VALUE_COMPRESSED_LEN)바이트보다 클 수 없습니다
ini 구성
yac.enable = 1 yac.keys_memory_size = 4M ; 4M can get 30K key slots, 32M can get 100K key slots yac.values_memory_size = 64M yac.compress_threshold = -1 yac.enable_cli = 0 ; 是否使用cli启用yac,默认为0 yac.serializer = php ; yac2.2.0以来,yac使用的特定seralizer json(-- enable-json) 、msgpack(-- enable-msgpack) 或igbinary(-- enable-igbinary)
constants
YAC_VERSION YAC_MAX_KEY_LEN = 48 ; if your key is longer than this, maybe you can use md5 result as the key YAC_MAX_VALUE_RAW_LEN = 64M YAC_MAX_VALUE_COMPRESSED_LEN = 1M YAC_SERIALIZER_PHP = 0 ; since yac-2.2.0 YAC_SERIALIZER_JSON = 1 ; since yac-2.2.0 YAC_SERIALIZER_MSGPACK = 2 ; since yac-2.2.0 YAC_SERIALIZER_IGBINARY = 3 ; since yac-2.2.0 YAC_SERIALIZER ; serializer according to yac.serializer, default is YAC_SERIALIZER_PHP
cli에서 발생할 수 있는 문제에 주의하세요
cli-enable
<?php use Doraemon\pockets\datebase\ShareCache; //实例化缓存封装类 $cache = new ShareCache('test'); //设置缓存 $cache->set([1,2,3,5,6]); //获取缓存 $a = $cache->get(); //备注 1.由于yac的缓存是共享的,所以在多个项目中使用时,需要注意key的唯一性,否则会出现缓存覆盖的情况 //备注 2.由于cli在执行后会自动退出,所以在cli中使用时,需要注意缓存的有效期,当再次执行时候换存是拿不到的 //例如 //例 //step 1 <?php use Doraemon\pockets\datebase\ShareCache; $cache = new ShareCache('test'); //设置缓存 $cache->set([1,2,3,5,6]); //php step1.php //执行后会自动退出,缓存失效 <?php use Doraemon\pockets\datebase\ShareCache; //step 2 $cache = new ShareCache('test'); //设置缓存 $arr = $cache->get(); var_dump($arr);// 空 //php step2.php //执行事后上一个进程已经退出,所以缓存失效
method
Yac::__construct
를 활성화하려면 cli를 ini로 구성해야 합니다. 으아아아Yac 생성자에서 접두사를 지정할 수 있습니다. 이 접두사는 설정/가져오기/삭제를 수행할 때 모든 키 앞에 추가하는 데 사용됩니다.
Yac::__construct([string $prefix = ""])
Yac::set
<?php $yac = new Yac("myproduct_"); ?>
는 값을 Yac 캐시에 저장합니다. 키는 다음과 같습니다. 캐시는 고유하므로 동일한 키를 사용하십시오. 두 번째 값을 저장하면 원래 값을 덮어쓰게 됩니다.
성공 시 true 반환, 오류 시 false 반환(메모리가 없으면 CAS 쓰기 권한을 얻을 수 없음)
Yac::set($key, $value[, $ttl = 0]) Yac::set(array $kvs[, $ttl = 0])
참고:
Yac 2.1과 마찬가지로 CAS 경쟁이 실패하면 실패할 수도 있습니다. 다음 작업을 수행하려면 :
<?php $yac = new Yac(); $yac->set("foo", "bar"); $yac->set( array( "dummy" => "foo", "dummy2" => "foo", ) ); ?>
Yac::get
while (!($yac->set("important", "value")));
캐시에서 저장된 변수를 가져옵니다. 배열이 전달되면 각 요소를 가져와서 반환합니다. 성공하면 값을 반환하고, 오류가 발생하면 false를 반환합니다
Yac::get(array|string $key[, &$cas = NULL])
Yac::delete
<?php $yac = new Yac(); $yac->set("foo", "bar"); $yac->set( array( "dummy" => "foo", "dummy2" => "foo", ) ); $yac->get("dummy"); $yac->get(array("dummy", "dummy2")); ?>
캐시에서 저장된 변수를 삭제합니다. 지연이 지정되면 $delay 초 후에 값이 삭제됩니다.
Yac::flush
Yac::delete(array|string $keys[, $delay=0])
모든 기존 항목을 즉시 무효화합니다. 실제로 리소스를 해제하지 않고 모든 항목을 유효하지 않은 것으로 표시할 뿐입니다.
Yac::info
Yac::flush()
캐시 정보 가져오기
Yac::info(void)
<?php .... var_dump($yac->info()); /* will return an array like: 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) } */
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP 공유 캐시 Yac이 APCU Memcache를 대체합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!