Die 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.