ka-misama/ cakephp-memcached-engine
CakePHP 的 Memcached 存储引擎,使用 memcached 扩展
Requires
- php: >=5.3.0
- ext-memcached: *
- composer/installers: *
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
安装
[手动]
- 下载此内容: http://github.com/kamisama/CakePHP-Memcached-Engine/zipball/master
- 解压下载的内容。
- 将生成的文件夹复制到
app/Plugin
- 将您刚刚复制的文件夹重命名为
Memcached
[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许可证发布