urodoz/cachemanager

Symfony 2 缓存管理工具包

安装: 410

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

dev-master 2014-07-19 13:31 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:11:32 UTC


README

Symfony 2 缓存管理工具包

配置

更新您的 config.yml 文件以配置 memcache 连接和/或 redis 连接(开发中用于多个 redis 服务器,暂时有效)

urodoz_cache:
    memcache:
        servers: ["127.0.0.1:11211"]
    redis:
        servers: ["192.168.1.120:6379"]

事件

缓存命中

在缓存命中时,会在 Symfony 2 EventDispatcher 上触发事件 urodoz.events.cachehit。事件来自类:Urodoz\Bundle\CacheBundle\Event\CacheHitEvent。包含有关使用的键、存储在缓存实现中的内容以及所使用的实现的信息。

缓存未命中

在缓存未命中时,会在 Symfony 2 EventDispatcher 上触发事件 urodoz.events.missed_cachehit。事件来自类:Urodoz\Bundle\CacheBundle\Event\MissedCacheHitEvent。包含有关使用的键和实现的信息。

使用方法

将数据存储和检索自 memcache 服务器池(作为服务)

//Retrieve the service from the ContainerInterface
$cacheManager = $container->get("urodoz_cachemanager");
//Store value
$cacheManager->implementation("memcache")->set($key, $value, 3600);
//Retrieve value
$cacheManager->implementation("memcache")->get($key);

当调用实现方法时,它会在 CacheManager 服务上设置活动实现。您可以在后续调用中避免再次设置实现。

//Storing on memcache
$cacheManager = $container->get("urodoz_cachemanager");
$cacheManager->implementation("memcache")->set($key1, $value1);
$cacheManager->set($key2, $value2);
$cacheManager->set($key3, $value3);
$cacheManager->set($key4, $value4);
//Retrieving from memcache
$data["one"] = $cacheManager->get($key2);
$data["two"] = $cacheManager->get($key3);
$data["three"] = $cacheManager->get($key4);

将数据存储和检索自 redis 服务器(作为服务),您只需更改请求给缓存管理器服务的实现即可

//Retrieve the service from the ContainerInterface
$cacheManager = $container->get("urodoz_cachemanager");
//Store value
$cacheManager->implementation("redis")->set($key, $value, 3600);
//Retrieve value
$cacheManager->implementation("redis")->get($key);

前缀生成

更新缓存键所抛出的事件是 urodoz.events.update_cachekey,这是一个示例配置

urodoz_cache:
    memcache:
        servers: ["127.0.0.1:11211"]
    redis:
        servers: ["192.168.1.120:6379"]

服务配置作为监听器附加

    sample.cachePrefixGenerator:
        class: Sample\Bundle\CoreBundle\Service\CachePrefixGenerator
        calls:
            - ["setContainer", [@service_container]]
        tags:
            - { name: kernel.event_listener, event: urodoz.events.update_cachekey, method: onCacheKeyUpdate }

服务类

<?php

namespace Urodoz\Bundle\CacheBundle\Tests\Service\Mocks;

use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Urodoz\Bundle\CacheBundle\Event\UpdateCacheKeyEvent;

class PrefixGenerator implements ContainerAwareInterface
{

    //....

    public function onCacheKeyUpdate(UpdateCacheKeyEvent $event)
    {
        $event->addPrefix($this->container->getParameter("applicationName")."_");
        return $event;
    }

}