Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A fast, lock-free, shared memory user data cache for PHP

License

NotificationsYou must be signed in to change notification settings

laruence/yac

Repository files navigation

Build statusBuild Status

Yac is a shared and lockless memory user data cache for PHP.

it can be used to replace APC or local memcached.

Requirement

  • PHP 7 +

Install

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

Note

  1. Yac is a lockless cache, you should try to avoid or reduce the probability of multiple processes set one same key
  2. Yac use partial crc, you'd better re-arrange your cache content, place the most important(mutable) bytes at the head or tail

Restrictions

  1. Cache key cannot be longer than 48 (YAC_MAX_KEY_LEN) bytes
  2. Cache Value cannot be longer than 64M (YAC_MAX_VALUE_RAW_LEN) bytes
  3. Cache Value after compressed cannot be longer than 1M (YAC_MAX_VALUE_COMPRESSED_LEN) bytes

InIs

yac.enable = 1yac.keys_memory_size = 4M ; 4M can get 30K key slots, 32M can get 100K key slotsyac.values_memory_size = 64Myac.compress_threshold = -1yac.enable_cli = 0 ; whether enable yac with cli, default 0yac.serializer = php ; since yac 2.2.0 , specific seralizer yac used                       could be json(--enable-json), msgpack(--enable-msgpack) or igbinary(--enable-igbinary)

Constants

YAC_VERSIONYAC_MAX_KEY_LEN = 48 ; if your key is longer than this, maybe you can use md5 result as the keyYAC_MAX_VALUE_RAW_LEN = 64MYAC_MAX_VALUE_COMPRESSED_LEN = 1MYAC_SERIALIZER_PHP = 0   ; since yac-2.2.0YAC_SERIALIZER_JSON = 1  ; since yac-2.2.0YAC_SERIALIZER_MSGPACK = 2 ; since yac-2.2.0YAC_SERIALIZER_IGBINARY = 3 ; since yac-2.2.0YAC_SERIALIZER  ; serializer according to yac.serializer, default is YAC_SERIALIZER_PHP

Methods

Yac::__construct

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

Constructor of Yac, you can specify a prefix which will used to prepend to any keys when doing set/get/delete

<?php$yac =newYac("myproduct_");?>

Yac::set

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

Store a value into Yac cache, keys are cache-unique, so storing a second value with the same key will overwrite the original value.

Return true on success, return false on error (Like no memory, can not obtain cas write right)

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

Note:

As Yac 2.1, Store may failure if cas competition fails, you may need to do:

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

if you need the value to be stored properly.

Yac::get

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

Fetches a stored variable from the cache. If an array is passed then each element is fetched and returned.

Return the value on success, return false on error(Like no memory, can not obtain cas write right)

<?php$yac =newYac();$yac->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])

Removes a stored variable from the cache. If delay is specified, then the value will be deleted after $delay seconds.

Yac::flush

   Yac::flush()

Immediately invalidates all existing items. it doesn't actually free any resources, it only marks all the items as invalid.

Yac::info

   Yac::info(void)

Get cache info

<?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)  }  */

About

A fast, lock-free, shared memory user data cache for PHP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp