0221 - 27 90 520
isinfo@intersales.de
Categories
Blog E-Commerce Magento News

Redis Cache zur Steigerung der Magento Performance einrichten

redis_logoDie Zeiten, in denen Magento Shops als träge galten, sind – zum Glück – lange vorbei. Neben den Optimierungen, die das Magento Core Team in den Kern eingebracht hat, tragen vor allem diverse Caching-Systeme zur deutlichen – objektiv und subjektiv – meßbaren Beschleunigung bei. Redis – ein Opensource Caching System – kann unserer Erfahrung nach sowohl das Magento Frontend als auch das Backend ganz erheblich beschleunigen. Dank der direkten Unterstützung seit Magento 1.8 lässt es sich einfach in jedem Magento Shop integrieren. Wir erklären wie.

Das ist Redis

Redis ist ein Key-Value Speichersystem, welches im Arbeitsspeicher angesiedelt ist, vergleichbar dem verbreiteten Memcache. Redis kann Memcache vollständig ersetzen. Es zeichnet sich unter anderem dadurch gegenüber Memcache aus, dass es ein Speichern auf Festspeicher sowie Replikation erlaubt, so dass es hochverfügbar betrieben werden kann. Redis kann als alternativer Backend-Cache sowie für das Speichern von Session-Informationen in Magento eingesetzt werden.

Installation von Redis

Redis läuft als Dienst. Für die gängigen Linux-Distributionen sind Paketquellen für die Installation verfügbar.
Ubuntu: In den Ubuntu-Paketquellen ist Redis derzeit nur in Version 13.10 enthalten. Bei anderen Versionen muss das ppa https://redis.io/docs/getting-started/installation/install-redis-on-linux/ hinzufügt werden: [shell] sudo add-apt-repository ppa:rwky/redis sudo apt-get update sudo apt-get install redis-server [/shell]
Debian und andere Linux-Derivate: Von http://redis.io/download die neueste Version herunterladen, installieren und starten: [shell] wget http://download.redis.io/redis-stable.tar.gz tar xzf redis-stable.tar.gz cd redis-stable make mv src/redis-server /usr/local/sbin/ /usr/local/sbin/redis-server [/shell]

Einrichtung von Redis in Magento

Das Magento Redis Modul ist ab Version 1.8 vorinstalliert, aber deaktiviert.
Für die Aktivierung in der Datei magento-install-dir/app/etc/modules/Cm_RedisSession.xml einfach die
Option <active> von false auf true ändern, um das Modul zu aktivieren.
Nach dem das Redis-Modul aktiviert und installiert ist, muss noch die local.xml angepasst werden: magento-install-dir/app/etc/local.xml erweitern mit nachfolgendem Eintrag. [xml] <global> <cache> <backend>Cm_Cache_Backend_Redis</backend> <backend_options> <server>127.0.0.1</server> <!– or absolute path to unix socket for better performance –> <port>6379</port> <database>DOMAIN_0</database> <password></password>r <force_standalone>1</force_standalone> <!– 0 for phpredis, 1 for standalone PHP –> <connect_retries>1</connect_retries> <!– Reduces errors due to random connection failures –> <automatic_cleaning_factor>0</automatic_cleaning_factor> <!– Disabled by default –> <compress_data>1</compress_data> <!– 0-9 for compression level, recommended: 0 or 1 –> <compress_tags>1</compress_tags> <!– 0-9 for compression level, recommended: 0 or 1 –> <compress_threshold>20480</compress_threshold> <!– Strings below this size will not be compressed –> <compression_lib>gzip</compression_lib> <!– Supports gzip, lzf and snappy –> <persistent>1</persistent> <!– persistence value, 0: not in use, > 0 used as persistence ID –> </backend_options> </cache> <!– example of redis full page cache –> <full_page_cache> <backend>Cm_Cache_Backend_Redis</backend> <backend_options> <server>127.0.0.1</server> <!– or absolute path to unix socket for better performance –> <port>6379</port> <database>DOAMIN_1</database> <password></password> <force_standalone>1</force_standalone> <!– 0 for phpredis, 1 for standalone PHP –> <connect_retries>1</connect_retries> <!– Reduces errors due to random connection failures –> <automatic_cleaning_factor>0</automatic_cleaning_factor> <!– Disabled by default –> <!– in FPC data is already gzipped, no need to do this twice –> <compress_data>0</compress_data> <!– 0-9 for compression level, recommended: 0 or 1 –> <compress_tags>1</compress_tags> <!– 0-9 for compression level, recommended: 0 or 1 –> <compress_threshold>20480</compress_threshold> <!– Strings below this size will not be compressed –> <compression_lib>gzip</compression_lib> <!– Supports gzip, lzf and snappy –> <lifetimelimit>43200</lifetimelimit> <!– set lifetime for keys without TTL –> <persistent>2</persistent> </backend_options> </full_page_cache> <!– example of redis session storage –> <session_save>db</session_save> <redis_session> <!– All options seen here are the defaults –> <host>127.0.0.1</host> <!– Specify an absolute path if using a unix socket –> <port>6379</port> <password></password> <!– Specify if your Redis server requires authentication –> <timeout>2.5</timeout> <!– This is the Redis connection timeout, not the locking timeout –> <persistent></persistent> <!– Specify unique string to enable persistent connections. E.g.: sess-db0; bugs with phpredis and php-fpm are known: https://github.com/nicolasff/phpredis/issues/70 –> <db>DOMAIN_0</db> <!– Redis database number; protection from accidental loss is improved by using a unique DB number for sessions –> <compression_threshold>2048</compression_threshold> <!– Set to 0 to disable compression (recommended when suhosin.session.encrypt=on); known bug with strings over 64k: https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues/18 –> <compression_lib>gzip</compression_lib> <!– gzip, lzf or snappy –> <log_level>1</log_level> <!– 0 (emergency: system is unusable), 4 (warning; additional information, recommended), 5 (notice: normal but significant condition), 6 (info: informational messages), 7 (debug: the most information for development/testing) –> <max_concurrency>6</max_concurrency> <!– maximum number of processes that can wait for a lock on one session; for large production clusters, set this to at least 10% of the number of PHP processes –> <break_after_frontend>5</break_after_frontend> <!– seconds to wait for a session lock in the frontend; not as critical as admin –> <break_after_adminhtml>30</break_after_adminhtml> <bot_lifetime>7200</bot_lifetime> <!– Bots get shorter session lifetimes. 0 to disable –> </redis_session> </global> [/xml] Hier mindestens
  • <database> Eintrag anpassen
  • <forece_standalone> auf 1 setzen, wenn man kein phpredis einsetzt.
Abschließend den Magento-Cache leeren.

Magento vor 1.8

Redis kann auch mit älteren Versionen von Magento betrieben werden, z.B. mit 1.7.x Das benötigte Redis-Modul Magento-Modul Cm_RedisSession muss in diesen Fällen manuell installiert werden. Es ist bei github unter dieser Adresse verfügbar: https://github.com/colinmollenhour/Cm_RedisSession Die Magento Expert Consulting Group hat ein lesenswertes Papier zu Redis mit Magento veröffentlicht: http://www.magentocommerce.com/consulting/expert-articles/using-redis-as-a-cache-backend-in-magento Die Redis Server Dokumentation findet man hier: http://redis.io/documentation

BTW

Es gibt auch einen Redis Desktop Manager – Screenshot anbei.
redis-desktop-manager