lancasters/sf-rediske-plugin

此软件包已废弃,不再维护。没有建议的替代软件包。

适用于SF 1.4或更高版本

1.3 2019-09-18 13:47 UTC

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/

感谢

感谢托马斯·帕里索和本杰明·维埃拉德对各自插件的贡献。在开发此插件时,也考虑了他们插件中的一些实现想法。