Skip to content
Symfony2 Bundle over predis
PHP HTML Makefile
Branch: master
Clone or download
Latest commit 8eddac7 Jan 27, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src feat: sf4 compatibility Jan 24, 2020
.atoum.php
.bootstrap.atoum.php
.coke
.gitignore use predis directly Feb 1, 2018
.php_cs
.travis.yml
CONTRIBUTING.md
LICENSE Mod: LICENSE and CONTRIBUTING Dec 4, 2014
Makefile
README.md fix doc for reconnect (#45) Mar 5, 2018
UPGRADING.md use predis directly Feb 1, 2018
composer.json feat: sf4 compatibility Jan 24, 2020

README.md

RedisBundle Build Status

symfony2 Bundle on top of predis

see predis/predis

features

  • semantic configuration
  • sf2 event dispatcher integration
  • session handler with redis storage : M6Web\Bundle\RedisBundle\Redis\RedisSessionHandler
  • redis adapter for guzzle cache : M6Web\Bundle\RedisBundle\Guzzle\RedisCacheAdapter
  • dataCollector for sf2 web profiler toolbar

usage

configuration

in config.yml for a simple cache service :

m6web_redis:
    servers:
        default:
            host:   'localhost'
            port: 6379
            reconnect: 1
    clients:
        default:
            servers:   ["default"]     # list of servers to use
            prefix:    raoul\          # prefix to use
            timeout:   2               # timeout in second
            read_write_timeout: 2      # read-write timeout in second

for a multiple clients :

m6web_redis:
    servers:
        first:
            host:   'localhost'
            port: 6379
            reconnect: 1
        second:
            host:   'xxxxxxxx'
    clients:
        default:
            servers:   ["first"]     # list of servers to use
            prefix: raoul\           # prefix to use
            timeout:   2             # timeout in second (float)
            read_write_timeout: 1.2  # read write timeout in seconds (float)
            compress: true           # compress/uncompress data sent/retrieved from redis using gzip, only method SET, SETEX, SETNX and GET are supported
        sharded:
            servers: ["first", "second"]
            prefix: raaaoul\
            timeout:   1

$this->get('m6web_redis') send the default client. this->get('m6web_redis.sharded') the sharded one.

list of options in servers configuration

  • host: IP address or hostname of Redis.
  • port: CP port on which Redis is listening to. Default value 6379
  • database: Database index (see the SELECT command).
  • scheme: Connection scheme, such as 'tcp' or 'unix'. Default value tcp
  • async_connect: Performs the connect() operation asynchronously. Default value false
  • persistent: Leaves the connection open after a GC collection. Default value false
  • timeout: Timeout for the connect() operation. Default value 10
  • read_write_timeout: Timeout for read() and write() operations
  • reconnect: Number of reconnection attempt if a redis command fail, only for tcp
m6web_redis:
    servers:
        server1:
            host:   'localhost'
            port: 6379

server configuration via wildcard

m6web_redis:
    servers:
        server1:
            host:   'localhost'
            port: 6379
        server2:
            host:   'xxxxxxxx'
    clients:
        default:
            servers:   ["server*"]     # all servers matching server*
            prefix: raoul\
            timeout:   2

event dispatcher

The event M6Web\Bundle\RedisBundle\EventDispatcher\RedisEvent is automaticly dispatched when a command is executed. Events are fired with the redis.command label.

You can customize the event name through the client configuration :

m6web_redis:
   clients:
       default:
           eventname: myEventName

session handler

# app/config/config.yml
framework:
  session:
    # ...
    handler_id: session.handler.redis

m6web_redis:
  servers:
    first:
      ip: 'localhost'
      port: 6379
  clients:
    sessions:
      servers: ["first"]
      prefix: sessions\
      timeout: 1

services:
  session.handler.redis:
    class: M6Web\Bundle\RedisBundle\Redis\RedisSessionHandler
    public:    false
    arguments:
      - '@m6web_redis.sessions'
      - 3600

dataCollector

Datacollector is available when the Symfony profiler is enabled. The collector allow you to see the following Redis data:

  • Command name
  • Execution time
  • Command arguments

overwriting base class

m6web_redis:
    clients:
        default:
            servers: ["first"]
            type: ["db"]
            timeout: 0.5
            class: \MyCompany\Redis

guzzle redis cache adapter

m6web_redis:
  clients:
    guzzlehttp:
      servers: ["first"]
      prefix: GuzzleHttp\
      class: M6Web\Bundle\RedisBundle\CacheAdapters\M6WebGuzzleHttp
      timeout: 1

Launch Unit Tests

bin/atoum

Launch php cs

    make cs-ci
    make cs-fix
You can’t perform that action at this time.