SfRedisPlugin is a project mainly written in PHP, based on the MIT license.
An extension to sfRedisPlugin that adds ORM-like functionality. Think of it as OHM for PHP.
The sfRedis plugin provides redis support to symfony (through Predis).
You can install this plugin the usual way (RTFM), or if you want to work with the trunk:
$ cd plugins
$ svn co http://svn.symfony-project.com/plugins/sfRedisPlugin/trunk/ sfRedisPlugin
Then activate the plugin in the config/ProjectConfiguration.class.php
file.
Edit config/redis.yml
to suit your redis installation :
[yml]
all:
connections:
local:
host: 127.0.0.1
port: 6379
You can also use URL based notation :
[yml]
all:
connections:
local: redis://127.0.0.1:6379
By default, there is a connection named "default" which targets a local redis server.
All available parameters :
[yml]
all:
connections:
local:
host: 127.0.0.1
port: 6379
database: 0
password: secret
connection_timeout: 5
read_write_timeout: 30
You can also use Predis cluster feature :
[yml]
all:
connections:
myshard:
- redis://192.168.0.1:6379
- redis://192.168.0.2:6379
To create a connection, use sfRedis::getClient()
with the connection name as parameter :
[php]
$redis = sfRedis::getClient('myshard');
Or empty to use "default" connection:
[php]
$redis = sfRedis::getClient();
Then follow Predis API to query the database
[php]
$redis->set('name', 'value');
$value = $redis->get('name');
The sfRedisPlugin provides a sfRedisCache
class to use for view and/or i18n symfony cache.
To enable it, edit config/factories.yml
:
[yml]
all:
view_cache:
class: sfRedisCache
param:
connection: default
prefix: view:%SF_APP%:%SF_ENVIRONMENT%
The parameter "connection" is the key defined in config/redis.yml
.
The parameter "prefix" is adjusted in this example.
The sfRedisPlugin provides a Doctrine cache backend.
To enable it, edit ProjectConfiguration::configureDoctrine
with :
[php]
$cacheDriver = new Doctrine_Cache_Redis(array('server' => 'redis://127.0.0.1:6379', 'prefix' => 'dql:'));
$manager->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cacheDriver);
The option "prefix" is recommended to keep redis server keys clean.
You can also pass a Predis_Client
object as an option:
[php]
$redis = Predis_Client::create(...);
$cacheDriver = new Doctrine_Cache_Redis(array('redis' => $redis));
$manager->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cacheDriver);
Since sfRedis::getClient
returns a Predis_Client
, you can use configuration from your config/redis.yml
:
[php]
$cacheDriver = new Doctrine_Cache_Redis(array('redis' => sfRedis::getClient('local'), 'prefix' => 'dql:'));
$manager->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cacheDriver);
Please note, you need to enable the sfRedisPlugin
before the sfDoctrinePlugin
to make the previous snippet work.