solilokiam/httprediscache

适用于 Symfony 2 的 Redis 缓存 HttpCache 扩展

dev-master 2015-10-19 11:07 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:13:30 UTC


README

什么是 HttpRedisCache?

Redis 缓存是对 Symfony 2 内部 http 缓存的改进。所有缓存数据都存储在 Redis 而不是文件系统中。这可以在磁盘空间不足或需要跨多个服务器共享缓存数据时非常有用。

要求

HttpRedisCache 仅支持 symfony 2.3。其他版本可能或可能不工作。已安装 Redis php 扩展。

安装

将 HttpRedisCache 添加到应用的 composer.json 文件中

{
    "require": {
        "solilokiam/httprediscache": "dev-master"
    }
}

使用以下命令安装库及其依赖项

$ php composer.phar update solilokiam\httprediscache

激活你的 symfony 内部 http 缓存

// web/app.php
require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
require_once __DIR__.'/../app/AppCache.php';

use Symfony\Component\HttpFoundation\Request;

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
// wrap the default AppKernel with the AppCache one
$kernel = new AppCache($kernel);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

AppCache 类从 HttpCache 继承为 HttpRedisCache,如下所示

// app/AppCache.php
require_once __DIR__.'/AppKernel.php';


class AppCache extends \Solilokiam\HttpRedisCache\HttpRedisCache
{

}

配置

默认情况下,此库具有以下配置

  • redis 主机:localhost
  • redis 端口:6379
  • redis 密码:~
  • redis 数据库:~
  • redis 选项:~

您可以通过在 AppCache 中添加一些方法实现来更改它

// app/AppCache.php
require_once __DIR__.'/AppKernel.php';


class AppCache extends \Solilokiam\HttpRedisCache\HttpRedisCache
{
    public function getConnectionParams()
    {
        return array(
            'host' => 'localhost',
            'port' => '6739',
            'password' => 'somepassword',
            'database' => 'somedatabase',
            'options' => array(
                Redis::OPT_SERIALIZER => Redis::SERIALIZER_NONE,
                Redis::OPT_PREFIX => 'myAppName:'
            )
        );
    }
}

仅有的 必需 数组元素是主机,其他都是可选的。

您还可以通过在 AppCache 中添加一些实现方法来配置键前缀

// app/AppCache.php
require_once __DIR__.'/AppKernel.php';


class AppCache extends \Solilokiam\HttpRedisCache\HttpRedisCache
{
    ...

    public function getDigestKeyPrefix()
    {
        return 'hrd';
    }

    public function getLockKey()
    {
        return 'hrl';
    }

    public function getMetadataKeyPrefix()
    {
        return 'hrm';
    }
    ...
}

请记住,您可以像处理默认的 symfony 内部 http 缓存一样配置其他缓存设置。

// app/AppCache.php
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;

class AppCache extends HttpCache
{
    protected function getOptions()
    {
        return array(
            'debug'                  => false,
            'default_ttl'            => 0,
            'private_headers'        => array('Authorization', 'Cookie'),
            'allow_reload'           => false,
            'allow_revalidate'       => false,
            'stale_while_revalidate' => 2,
            'stale_if_error'         => 60,
        );
    }
}

构建状态

Build Status SensioLabsInsight Latest Stable Version Total Downloads Latest Unstable Version License

作者

  • Miquel Company Rodriguez (@solilokiam)

待办事项

  • 改进测试
  • 支持 symfony 2.4