iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php共享缓存Yac怎么使用
  • 504
分享到

php共享缓存Yac怎么使用

2023-07-05 08:07:32 504人浏览 安东尼
摘要

这篇“PHP共享缓存Yac怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php共享缓存Yac怎么使用”文章吧。yac

这篇“PHP共享缓存Yac怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php共享缓存Yac怎么使用”文章吧。

yac 缓存

Yac 是用于 PHP 的共享和无内存用户数据缓存。它可以用来替换 APC 或本地 memcached。

要求

PHP 7 +

Install

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

Note

  • Yac 是无锁缓存,您应该尽量避免或减少多个进程设置一个相同键的概率

  • Yac 使用部分 crc,您最好重新排列缓存内容,将最重要 (可变) 的字节放在头部或尾部

Restrictions

  • 缓存 key 不能大于 48 (YAC_MAX_KEY_LEN) bytes

  • 缓存内容不能大于 64M (YAC_MAX_VALUE_RAW_LEN) bytes

  • 压缩后的缓存值不能大于 1M 1M (YAC_MAX_VALUE_COMPRESSED_LEN) bytes

ini 配置

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 ; 是否使用cli启用yac,默认为0yac.serializer = php ; yac2.2.0以来,yac使用的特定seralizer JSON(-- enable-json) 、msgpack(-- enable-msgpack) 或igbinary(-- enable-igbinary)

常量

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

注意 cli 下会出现的问题

如果 cli情况下 一定ini配置开启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<?phpuse Doraemon\pockets\datebase\ShareCache;$cache  = new ShareCache('test');//设置缓存$cache->set([1,2,3,5,6]);//php step1.php //执行后会自动退出,缓存失效<?phpuse Doraemon\pockets\datebase\ShareCache; //step 2$cache  = new ShareCache('test');//设置缓存$arr = $cache->get();var_dump($arr);// 空//php step2.php //执行事后上一个进程已经退出,所以缓存失效

方法

Yac::__construct

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

Yac 的构造函数,您可以指定一个前缀,该前缀将用于在执行设置 / 获取 / 删除时预先添加到任何键

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

Yac::set

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

将一个值存储到 Yac 缓存中,键是缓存唯一的,因此使用相同的键存储第二个值将覆盖原始值。

成功时返回 true,错误时返回 false (如无内存,无法获得 cas write right)

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

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

从缓存中删除存储的变量。如果指定了延迟,则该值将在 $delay 秒后删除。

Yac::flush

Yac::flush()

立即使所有现有项目无效。它实际上并没有释放任何资源,它只将所有项目标记为无效。

Yac::info

Yac::info(void)

获取缓存信息

<?php  ....  var_dump($yac->info());  
<?phpnamespace Test\Cacheuse Yac;use RuntimeException;class ShareCache{    public bool $isEnable = true;    public string $key = '';        public function __construct($key)    {        if (!extension_loaded("yac")) {            $this->isEnable = false;            throw new RuntimeException('yac 扩展不存在!');        }        if (!$key) {            throw new RuntimeException('key 不能为空!');        }        $this->key = md5($key);    }        public function get()    {        if ($this->isEnable) {            return (new Yac('db_'))->get($this->key);        }        throw new RuntimeException('yac is not enable ,skip getCache');    }        public function set($var): bool    {        if ($this->isEnable) {            return (new Yac('db_'))->set($this->key, $var, 3600);        }        throw new RuntimeException('yac is not enable ,skip setCache');    }        public function del(): bool    {        if ($this->isEnable) {            return (new Yac('db_'))->delete($this->key);        }        throw new RuntimeException('yac is not enable ,skip delCache');    }        public function info(): array    {        if ($this->isEnable) {            return (new Yac('db_'))->info();        }        throw new RuntimeException('yac is not enable ,skip info');    }        public function flush(): bool    {        if ($this->isEnable) {            return (new Yac)->flush();        }        throw new RuntimeException('yac is not enable ,skip flush');    }}

以上就是关于“php共享缓存Yac怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网PHP编程频道。

--结束END--

本文标题: php共享缓存Yac怎么使用

本文链接: https://www.lsjlt.com/news/350700.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php共享缓存Yac怎么使用
    这篇“php共享缓存Yac怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php共享缓存Yac怎么使用”文章吧。yac...
    99+
    2023-07-05
  • php共享缓存之Yac替换APCU memcache!
    本篇文章给大家带来了关于php+yac的相关知识,其中主要跟大家聊一聊怎么用Yac替换APCU memcache,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。yac 缓存Yac 是用于 PHP 的共享和无锁内存用户数据缓存。它可以用来...
    99+
    2023-05-14
    php Yac
  • 什么是cdn共享缓存
    cdn共享缓存是指处于客户端和服务器之间的缓存,可提升对网站的访问速度,减轻源站服务器负载,缓解Internet网络拥挤的状况,提高用户访问网站的响应速度,保证了源站安全性;cdn的关键技术主要有内容存储和分发技术,主要的功能是加速静态资源...
    99+
    2024-04-02
  • php缓存怎么使用
    本篇内容介绍了“php缓存怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一个网站或者一个应用的标准流程是浏览器向应用服务器发出请求,...
    99+
    2023-06-22
  • php怎么创建共享内存减少负载
    这篇文章主要介绍“php怎么创建共享内存减少负载”,在日常操作中,相信很多人在php怎么创建共享内存减少负载问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么创建共享内存减少负载”的疑惑有所帮助!接下来...
    99+
    2023-07-04
  • 配置Kubernetes共享使用Ceph存储
    目录...
    99+
    2023-06-05
  • CentOS中如何使用共享内存
    CentOS中如何使用共享内存,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效...
    99+
    2023-06-10
  • php共享内存的方法是什么
    在PHP中,可以使用共享内存来实现进程间的通信和数据共享。PHP提供了一个扩展模块,名为shmop,该模块允许我们创建和操作共享内存...
    99+
    2023-09-06
    php
  • linux怎么挂载共享存储
    可以通过以下步骤在Linux系统上挂载共享存储: 确保已安装必要的软件:通常情况下,挂载共享存储需要安装NFS或Samba等软件包...
    99+
    2024-04-09
    linux
  • linux怎么删除共享内存
    在Linux系统中,可以使用ipcs命令查看当前共享内存的情况。然后可以使用ipcrm命令删除共享内存。1. 使用ipcs命令查看共...
    99+
    2023-08-20
    linux
  • python怎么共享内存通信
    在Python中,可以使用多种方式来实现进程间的共享内存通信,下面是一些常用的方法: 使用`multiprocessing`模块中...
    99+
    2023-10-25
    python
  • c++怎么创建共享内存
    在C++中,可以使用操作系统的系统调用或者第三方库来创建共享内存。1. 使用操作系统的系统调用:在Unix/Linux操作系统中,可...
    99+
    2023-08-20
    c++
  • PHP开发中如何处理分布式缓存和共享数据
    随着互联网的迅速发展,分布式系统正在成为一个越来越重要的话题。在分布式系统中,缓存和共享数据的管理是至关重要的一环。在PHP开发中,我们有多种方法来处理分布式缓存和共享数据,包括使用缓存系统如Redis和使用共享内存等。一、使用缓存系统处理...
    99+
    2023-10-21
    PHP开发(PHP development) 分布式缓存(Distributed cache) 共享数据(Shared
  • php中共享内存有什么优缺点
    这篇文章主要讲解了“php中共享内存有什么优缺点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中共享内存有什么优缺点”吧!在PHP中,共享内存是在相同机器中两个正在运行的进程之间共享和...
    99+
    2023-06-29
  • vmware中怎么设置共享存储
    vmware中怎么设置共享存储,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。vmware设置共享存储(RAC) 之前一直使用O...
    99+
    2024-04-02
  • C++中怎么实现共享内存
    C++中怎么实现共享内存,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。初次使用C++标准库实现共享内存的管理时,Vector每次分配内存个数不固定,回收也不固定,这样的话,程序...
    99+
    2023-06-17
  • 共享云服务器怎么使用
    共享云服务器是多个用户共用一台服务器的服务,用户可以通过以下步骤使用共享云服务器:1. 注册并购买共享云服务器服务,获得服务器的IP...
    99+
    2023-06-07
    共享云服务器 云服务器
  • Linux中怎么实现共享内存
    Linux中怎么实现共享内存,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、概念共享内存是被多个进程共享的一部分物理内存,是进程间共享数据的最快的一种方法。&...
    99+
    2023-06-12
  • 共享型云主机怎么使用
    共享型云主机使用的方法:1、进入服务商提供的云主机管理面板,查看云主机信息;2、启动FTP软件,新建站点;3、连接远程新建的站点,上...
    99+
    2023-02-08
    共享型云主机 云主机
  • thinkphp缓存怎么使用
    本篇内容介绍了“thinkphp缓存怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!thinkphp缓存的用法:1、使用模型查询,其代...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作