phy/cache-bundle

该包最新版本(1.0.0)的许可证信息不可用。

支持APC、Memcache、Memcached、Redis、本地和磁盘存储的Symfony2缓存包。

安装次数: 8,488

依赖关系: 0

建议者: 0

安全: 0

星标: 7

关注者: 3

分支: 1

公开问题: 1

类型:symfony-bundle

1.0.0 2015-01-27 17:28 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:10:26 UTC


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 文件

感谢