lancasters/ sf-rediske-plugin
适用于SF 1.4或更高版本
This package is not auto-updated.
Last update: 2023-09-13 14:23:40 UTC
README
sfRediskaPlugin通过Rediska(在app.yml和factories.yml中定义)提供Symfony缓存,并且还允许对Rediska实例的简单代理接口。
此外,还提供了一个Doctrine Redis驱动程序(也使用Rediska)用于查询/结果缓存。
安装
您可以通过几种方式安装此插件
从git克隆
从我们的插件GitHub仓库克隆到您的Symfony项目插件目录
git clone http://github.com/mastermix/sfRediskaPlugin.git
添加为子模块
将插件GitHub仓库添加到您的项目仓库中作为git子模块
git submodule add http://github.com/mastermix/sfRediskaPlugin.git plugins/sfRediskaPlugin
从SVN导出
从插件SVN仓库导出到您的Symfony项目插件目录
svn export http://svn.symfony-project.com/plugins/sfRediskaPlugin
添加为外部资源
将插件SVN仓库添加到您的项目仓库中作为外部资源
svn propset svn:externals "plugins/sfRediskaPlugin http://svn.symfony-project.com/plugins/sfRediskaPlugin" .
每当向GitHub仓库提交更改时,SVN仓库会自动同步。
启用sfRediskaPlugin
不要忘记在ProjectConfiguration.class.php中启用插件
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->enablePlugins('sfRediskaPlugin');
}
}
配置
首先,让我们在app.yml中配置您的Rediska实例(例如,app,otherstuff)
all:
rediska:
app:
servers:
server_01:
host: 127.0.0.1
persistent: true
otherstuff:
servers:
server_01:
host: 127.0.0.1
persistent: true
server_02:
host: 127.0.0.1
port: 6380
persistent: true
Rediska在设置Rediska实例时提供的所有配置参数均在此可用。
现在我们可以使用这些实例来配置许多事物!
在上面的示例中,我们将使用app
实例作为Symfony内部缓存的存储,使用otherstuff
缓存其他关键数据。
Symfony缓存
Symfony提供了缓存应用程序关键部分的能力 - 会话存储、路由和视图缓存。
要为会话存储配置sfRediskaPlugin
storage:
class: sfCacheSessionStorage
param:
cache:
class: sfRediskaCache
param:
lifetime: 86400
prefix: %SF_APP_DIR%
instance: app
为路由
routing:
class: sfPatternRouting
param:
generate_shortest_url: true
extra_parameters_as_query_string: true
cache:
class: sfRediskaCache
param:
lifetime: 86400
prefix: routing:%SF_APP%:%SF_ENVIRONMENT%
instance: app
为视图缓存
view_cache:
class: sfRediskaCache
param:
instance: app
prefix: view:%SF_APP%:%SF_ENVIRONMENT%
Rediska使用
您也可以使用sfRediskaPlugin直接使用任何Rediska实例。这些实例只在页面加载时实例化一次以提高效率。
以下是一个示例
$redis = sfRediska::getInstance('otherstuff');
$redis->pipeline()
->addToSortedSet(...)
->deleteFromSortedSet(..)
->delete(..)
->execute();
正如您所看到的,所有Rediska命令都可以通过这种方式完全访问。
Doctrine驱动程序
要设置Rediska Doctrine驱动程序,首先必须编辑您的应用程序配置文件,例如frontendConfiguration.class.php
public function configureDoctrine(Doctrine_Manager $manager)
{
$cacheDriver = new Doctrine_Cache_Redis(array('instance' => 'otherstuff', 'prefix' => 'dql:'));
$manager->setAttribute(Doctrine_Core::ATTR_RESULT_CACHE, $cacheDriver);
}
注意:ProjectConfiguration.class.php不能用作sfRediskaPlugin依赖于在应用程序级别设置的配置变量。
链接
Rediska - http://rediska.geometria-lab.net/
感谢
感谢托马斯·帕里索和本杰明·维埃拉德对各自插件的贡献。在开发此插件时,也考虑了他们插件中的一些实现想法。