Redis als Cache-Backend in TYPO3

Das Caching-Framework bietet seit TYPO3 4.5 viele Möglichkeiten das Caching zu optimieren.

Eine, wie ich finde, sehr gute Möglichkeit, gerade wenn man mehrere TYPO3-Installationen auf einem Server versammelt sind, ist die Möglichkeit Teile des Cache in Redis abzulegen.

Durch die Möglichkeit in Redis viele verschiedene Datenbanken anzulegen werden die Caches sauber voneinander getrennt und man kann die Vorteile einer RAM-basierten Datenbank zu nutzen. Dies ist für mich ein entscheidender Vorteil gegenüber Memcache und lässt sich für die verschiedenen Cache-Backends nutzen.

Für TYPO3 < 6.2

$TYPO3_CONF_VARS[‚SYS‘][‚caching‘][‚cacheConfigurations‘][‚cache_pages‘] = array(
    ‚backend‘ => ‚t3lib_cache_backend_RedisBackend‘,
    ‚options‘ => array(
        ‚defaultLifetime‘ => 86400,
        ‚database‘ => 0
        )
    );
$TYPO3_CONF_VARS[‚SYS‘][‚caching‘][‚cacheConfigurations‘][‚cache_pagesection‘] = array(
    ‚backend‘ => ‚t3lib_cache_backend_RedisBackend‘,
    ‚options‘ => array(
        ‚defaultLifetime‘ => 86400,
        ‚database‘ => 1
        )
    );
$TYPO3_CONF_VARS[‚SYS‘][‚caching‘][‚cacheConfigurations‘][‚cache_hash‘] = array(
    ‚backend‘ => ‚t3lib_cache_backend_RedisBackend‘,
    ‚options‘ => array(
        ‚defaultLifetime‘ => 86400,
        ‚database‘ => 2
        )
    );
$TYPO3_CONF_VARS[‚SYS‘][‚caching‘][‚cacheConfigurations‘][‚extbase_object‘] = array(
    ‚backend‘ => ‚t3lib_cache_backend_RedisBackend‘,
    ‚options‘ => array(
        ‚defaultLifetime‘ => 86400,
        ‚database‘ => 3
        )
    );
$TYPO3_CONF_VARS[‚SYS‘][‚caching‘][‚cacheConfigurations‘][‚extbase_reflection‘] = array(
    ‚backend‘ => ‚t3lib_cache_backend_RedisBackend‘,
    ‚options‘ => array(
        ‚defaultLifetime‘ => 86400,
        ‚database‘ => 4
        )
    );

Für TYPO3 >= 6.2 sieht das dann folgendermaßen aus:

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['options'] = array(
        'defaultLifetime' => 86400,
        'database' => 0
        );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['options'] = array(
        'defaultLifetime' => 86400,
        'database' => 1
        );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['options'] = array(
        'defaultLifetime' => 86400,
        'database' => 2
        );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object']['options'] = array(
        'defaultLifetime' => 86400,
        'database' => 3
        );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection']['options'] = array(
        'defaultLifetime' => 86400,
        'database' => 4
        );

oder zum direkten Einfügen in das caching-Array in der LocalConfiguration.php:

'cacheConfigurations' => array(
    'cache_pages' => array(
        'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
        'options' => array(
            'defaultLifetime' => 86400,
            'database' => 0
        )
    ),
    'cache_pagesection' => array(
        'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
        'options' => array(
            'defaultLifetime' => 86400,
            'database' => 1
        )
    ),        
    'cache_hash' => array(
        'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
        'options' => array(
            'defaultLifetime' => 86400,
            'database' => 2
        )
    ),        
    'extbase_object' => array(
        'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
        'options' => array(
            'defaultLifetime' => 86400,
            'database' => 3
        )
    ),        
    'extbase_reflection' => array(
        'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\RedisBackend',
        'options' => array(
            'defaultLifetime' => 86400,
            'database' => 4
        )                                                                                                                             
    )
)

In dieser Beispielkonfiguration wurde die Lebensdauer für alle Caches exemplarisch auf 24h gestellt, das kann man natürlich für die eigenen Bedürfnisse noch optimieren.

Das Redis Backend hat in meinem Fall die Auslierung der gecachten Seiten noch einmal um über 100ms beschleunigt. Klingt nach nicht sehr viel, bedeutet aber in meinem Fall einen Performanceschub um über 30%.

http://redis.io
http://docs.typo3.org/typo3cms/CoreApiReference/CachingFramework/Configuration/Index.html

Google+