ka-misama/cakephp-memcached-engine

CakePHP 的 Memcached 存储引擎,使用 memcached 扩展

0.12 2013-10-07 02:04 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:38:35 UTC


README

这是一个 CakePHP 默认 memcache 引擎的替代缓存引擎。默认的 memcache 引擎使用 memcache 扩展,而此引擎使用 memcached 扩展。(注意小写的 d)

背景

Memcached 相较于 Memcache 扩展的优点

  • 允许使用二进制协议
  • 对压缩键进行增减操作
  • 使用 igbinary 进行序列化(memcached 必须使用 --enable-igbinary 编译)

Igbinary 是 memcached 扩展的亮点。

Igbinary 是标准 PHP 序列化器的替代品。它不再使用耗时的文本表示,而是以紧凑的二进制形式存储 PHP 数据结构。当使用 memcached 或类似内存存储时,可以显著节省空间和提高速度。您可以将存储需求减少约 50%,并且速度至少与标准 PHP 序列化器相当。具体数字取决于您的数据。

请参阅 https://github.com/phadej/igbinary一些基准测试

对于 CakePHP 2.5+

从 CakePHP 2.5 开始,memcached 引擎将默认包含在核心中。无需安装。

对于 CakePHP 2.2、2.3 和 2.4

安装

[手动]

[GIT 子模块]

在您的应用目录中输入

git submodule add -b master git://github.com/kamisama/CakePHP-Memcached-Engine.git Plugin/kamisama/Memcached
git submodule init
git submodule update

[GIT Clone]

在您的 Plugin 目录中输入

git clone -b master git://github.com/kamisama/CakePHP-Memcached-Engine.git Memcached

[Composer]

kamisama/cakephp-memcached-engine 添加到您的 composer 依赖项,然后运行

composer install

启用插件

您需要在 app/Config/bootstrap.php 文件中启用插件

CakePlugin::load('Memcached');

如果您已经使用了 CakePlugin::loadAll();,则此步骤不是必需的。

用法

在您的 core.php 文件头部添加此行

App::uses('MemcachedEngine', 'Memcached.Lib/Cache/Engine');

然后您可以在缓存配置中使用它

Cache::config('default', array('engine' => 'Memcached'));

对于 CakePHP 2.0 和 2.1

安装

由于在这些版本中尚不支持在插件中定义缓存引擎,因此您必须

  • 下载 插件
  • 将位于 Lib/Cache/Engine 目录的 MemcachedEngine.php 文件复制到您的 app 文件夹中的 Lib/Cache/Engine 目录(如果需要则创建它)。

启用插件

您需要在 app/Config/bootstrap.php 文件中启用插件

CakePlugin::load('Memcached');

如果您已经使用了 CakePlugin::loadAll();,则此步骤不是必需的。

Cache::config('default', array('engine' => 'Memcached'));

用法

Cache::config('default', array('engine' => 'Memcached'));

设置

memcached 缓存引擎可以接受以下选项

Cache::config('router', array(
    # Usual options
    'engine' => 'Memcached',
    'prefix' => 'mc_',
    'duration' => '+7 days', // Expires in 7 days, from now
    'servers' => array(
        '127.0.0.1', // Default port 11211
        '127.0.0.1:11212' // Or you can specify the port
    )
     
    # Memcached options
    'compress' => false,
    'persistent' => false,
    'login' => null,
    'password => null,
    'serialize' => 'php'
));

compress

默认值: true
压缩缓存数据。与 memcache 不同,memcached 可以对压缩键进行增减操作

persistent

默认值: false
使用到 memcached 服务器的持久连接。要启用,将 persistent 设置为唯一的字符串,以标识连接。使用相同持久值的所有配置将共享单个底层连接。

登录名和密码

默认值: null
如果使用 SASL 进行身份验证,则为 memcached 服务器提供的凭据。

memcached 必须使用 SASL 支持编译,否则将抛出 CacheException

serialize

默认值: php
用于序列化数据所使用的引擎。

memcached支持的序列化器

  • php
  • json
  • igbinary

默认情况下,memcached扩展与php序列化器一起编译。要使用其他序列化器,必须使用适当的选项编译memcached扩展。请参阅Memcached文档。

使用无效或不支持的序列化器引擎将抛出CacheException

igbinary是推荐的序列化器。

注意

由于Memcached的increment/decrement问题,二进制协议暂时禁用查看问题

变更日志

####版本 0.12 (2013-10-06)

  • 代码优化

####版本 0.11 (2013-09-19)

  • serializer设置重命名为serialize
  • persistent_id设置与persitent合并,现在它接受一个字符串作为参数

####版本 0.10 (2013-09-18)

  • 添加选项以选择序列化器引擎

####版本 0.9 (2013-09-04)

  • 修复复制/粘贴错误,防止测试运行

####版本 0.8 (2013-09-04)

  • 轻微代码优化
  • 当尝试使用未安装SASL支持的Memcached扩展进行身份验证时,抛出CacheException

注意:从CakePHP 2.5开始,MemcachedEngine v0.8将包含在核心中。

####版本 0.7 (2013-08-26)

  • 将AmazonElastiCache支持重新合并到MemcachedEngine
  • 编码标准修复

####版本 0.6 (2013-08-26)

  • 由于Memcached的increment/decrement问题,禁用二进制协议查看问题
  • 添加测试
  • 添加缺失的逗号
  • 添加组支持
  • 使用Memcached::getAllKeys()来管理缓存清理

####版本 0.5 (2013-08-26)

  • 插件化缓存引擎 (@josegonzalez)
  • 添加SASL身份验证支持 (@josegonzalez)

####版本 0.4 (2013-08-18)

  • 修复#6:init()第二次持久连接返回false
  • 添加持久_id选项以创建单独的持久连接
  • 在搜索要清理的键时跳过重复项

####版本 0.3 (2012-08-29)

  • 代码格式化为Cake标准

####版本 0.2 (2012-03-22)

  • 实现了Cache::clear()

许可

此插件根据MIT许可证发布