urodoz / cachemanager
Symfony 2 缓存管理工具包
dev-master
2014-07-19 13:31 UTC
Requires
- php: >=5.3.2
- predis/predis: 0.8.*@dev
- symfony/framework-bundle: 2.*
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; } }