phy / cache-bundle
支持APC、Memcache、Memcached、Redis、本地和磁盘存储的Symfony2缓存包。
Requires
- php: >=5.3.0
Requires (Dev)
- symfony/finder: *
- symfony/framework-bundle: >=2.3.0
Suggests
- ext-zlib: If zlib is enabled we can compress values regardless of cache system.
README
使用简单,适用于Symfony2的缓存包装器。目前支持APC、本地磁盘、Memcache和Memcached。
安装
要将此包包含在您的Symfony2项目中,您只需在composer配置中包含此包。
"require": {
"phy/cache-bundle": "1.0.0"
}
然后相应地更新composer。
配置
以下是我们services.yml的示例,您不需要更改它,因为这些值来自parameters.yml。
services: phy_cache.client: class: %phy_cache.class% arguments: [ %phy_cache.settings% ] phy_cache: class: PHY\CacheBundle\Cache arguments: [ '@phy_cache.client' ] calls: - [ setExpiration, [ %phy_cache.expiration% ] ] - [ setCompression, [ %phy_cache.compression% ] ] - [ setPrefix, [ %phy_cache.prefix% ] ]
以下是在您的parameters.yml中设置常见缓存的方式。
Memcache
parameters: phy_cache.class: PHY\CacheBundle\Cache\Memcache phy_cache.settings: server: [ 127.0.0.1:11211 ] phy_cache.prefix: phy_ phy_cache.expiration: 300 phy_cache.compression: 0
磁盘
parameters: phy_cache.class: PHY\CacheBundle\Cache\Disk phy_cache.settings: location: /var/tmp/cache/ phy_cache.expiration: 300 phy_cache.compression: 0
Apc
parameters: phy_cache.class: PHY\CacheBundle\Cache\Apc phy_cache.settings: mode: opcode phy_cache.prefix: phy_ phy_cache.expiration: 300 phy_cache.compression: 0
Redis
parameters: phy_cache.class: PHY\CacheBundle\Cache\Redis phy_cache.settings: server: 127.0.0.1 port: 6379 password: pants phy_cache.prefix: phy_ phy_cache.expiration: 300 phy_cache.compression: 0
使用方法
在控制器(或任何容器感知类)中调用缓存,只需按其服务名称调用即可。
$cache = $this->container->get('phy_cache');
从那里,您可以开始设置、获取、替换、增加、减少等操作。
$id = 1; $cache = $this->container->get('phy_cache'); $hashKey = 'someModel/'.$id; if(!$someModel = $cache->get($hashKey)) { $someModel = $this->loadModel($id); $cache->set($hashKey, $someModel, 300); $cache->increment($hashKey.'/loads', 1); }
所有方法几乎100%与\Memcache相同。
命令行
有几种命令行选项可以处理简单的缓存方法。所有命令都具有使用--config选项覆盖缓存的能力。如果没有设置--config,它将使用通用的phy_cache,否则您可以通过JSON字符串格式传递配置
{ "type": "disk", "client": { "location": "./tmp" }, "options": { "prefix": "phy_", "expiration": 300, "compression": 0 } }
检查当前运行的统计信息(需要一些样式和额外的功能)
php app/console phy:cache:stats
并完全清除缓存
php app/console phy:cache:flush
设置一些内容
php app/console phy:cache:set --key something --value 3 --compress 0 --expires 40
替换一些内容
php app/console phy:cache:replace --key something --value 3 --compress 0 --expires 40
获取一些内容
php app/console phy:cache:get --key something --compress 0
删除一些内容
php app/console phy:cache:delete --key something
减少一些内容
php app/console phy:cache:decrement --key something --value 3
关于
最初使用的是BerylliumCacheBundle,由Kevin Boyd创建。大部分工作已经完成,但需要压缩来自MongoDB的一些相当大的聚合结果。创建了一个添加压缩功能的pull request,并注意到某些其他功能尚未实现。由于已经为Cache创建了一个类似的包(尽管不是为Symfony2),所以决定将其移植过来,这就是现在的样子。
要求
- PHP 5.3+
测试
测试将尝试使用所有不同的缓存客户端,如果它们未安装或无法连接到所需的缓存文件,则这些测试将被跳过。要测试磁盘缓存,需要有一个可写tmp目录,测试前后应该保持清洁。要运行所有测试,请在命令行中执行以下操作
phpunit
提交错误和功能请求
请通过GitHub向我发送错误
作者
John Mullanaphy - john@jo.mu - http://jo.mu/ 就这些了...
许可证
PHY/CacheBundle 在开源软件许可证(OSL 3.0)下许可 - 详细信息请参阅 LICENSE
文件