Le cache partagé PHP Yac remplace le memcache APCU !

藏色散人
Libérer: 2023-04-11 10:46:01
avant
3073 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur php+yac. Il explique principalement comment remplacer APCU memcache par Yac. Les amis intéressés peuvent jeter un œil ci-dessous. J'espère que cela sera utile à tout le monde.

yac cache

Yac est un cache de données utilisateur à mémoire partagée et sans verrouillage pour PHP. Il peut être utilisé pour remplacer APC ou Memcached local. Les produits fabriqués par Bird Brother doivent être de haute qualité. Exigences. réduire plusieurs processus en définissant la même clé Probabilité

Yac En utilisant un crc partiel, vous feriez mieux de réorganiser le contenu du cache pour mettre les octets (variables) les plus importants en tête ou en queue

Restrictions

La clé de cache ne peut pas être supérieure à 48 (YAC_MAX_KEY_LEN) octets

  • Le contenu du cache ne peut pas être supérieur à 64 M (YAC_MAX_VALUE_RAW_LEN) octets

  • La valeur du cache compressée ne peut pas être supérieure à 1M 1M (YAC_MAX_VALUE_COMPRESSED_LEN) octets

INI Configuration

$/path/to/phpize
$./configure --with-php-config=/path/to/php-config
$make && make install
Copier après la connexion
    constants
  • 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)
    Copier après la connexion

    Pay L'attention aux problèmes qui se produiront sous cli
  • if CLI doivent être configurés avec INI pour activer CLI-ENABLE

    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
    Copier après la connexion
  • Method

yac :: __ Construct

<?php  
use Doraemon\pockets\datebase\ShareCache;
//实例化缓存封装类
$cache  = new ShareCache(&#39;test&#39;);
//设置缓存
$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(&#39;test&#39;);
//设置缓存
$cache->set([1,2,3,5,6]);
//php step1.php //执行后会自动退出,缓存失效

<?php
use Doraemon\pockets\datebase\ShareCache; 
//step 2
$cache  = new ShareCache(&#39;test&#39;);
//设置缓存
$arr = $cache->get();
var_dump($arr);// 空
//php step2.php //执行事后上一个进程已经退出,所以缓存失效
Copier après la connexion
Le constructeur de Yac, vous pouvez spécifier un préfixe, ce préfixe sera utilisé pour ajouter n'importe quelle clé lors de l'exécution de set/get/delete

Yac::__construct([string $prefix = ""])
Copier après la connexion

Yac::set

<?php
   $yac = new Yac("myproduct_");
?>
Copier après la connexion
stocke une valeur dans le cache Yac, la clé est unique dans le cache, utilisez donc la même clé. Le stockage de la deuxième valeur écrasera la valeur d'origine.

Renvoyer true en cas de succès, renvoyer false en cas d'erreur (s'il n'y a pas de mémoire, le droit d'écriture cas ne peut pas être obtenu)

   Yac::set($key, $value[, $ttl = 0])
   Yac::set(array $kvs[, $ttl = 0])
Copier après la connexion

Remarque :

Comme Yac 2.1, si la compétition cas échoue, elle peut échouer. pour effectuer les opérations suivantes :

<?php
$yac = new Yac();
$yac->set("foo", "bar");
$yac->set(
    array(
        "dummy" => "foo",
        "dummy2" => "foo",
        )
    );
?>
Copier après la connexion
Yac::get

while (!($yac->set("important", "value")));
Copier après la connexion

Récupère la variable stockée depuis le cache. Si un tableau est passé, chaque élément est récupéré et renvoyé. Renvoie une valeur en cas de succès, false en cas d'erreur

 Yac::get(array|string $key[, &$cas = NULL])
Copier après la connexion

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"));
?>
Copier après la connexion

Supprime la variable stockée du cache. Si un délai est spécifié, la valeur sera supprimée après $delay secondes.

Yac::flush

Yac::delete(array|string $keys[, $delay=0])
Copier après la connexion
Invalidez instantanément tous les éléments existants. En réalité, il ne libère aucune ressource, il marque simplement tous les éléments comme invalides.

Yac::info

Yac::flush()
Copier après la connexion

Obtenir des informations sur le cache

Yac::info(void)
Copier après la connexion
<?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)
  }
  */
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal