Difference between revisions of "Install Redis Full Page Caching for Magento Enterprise"
(→How to flush your Redis Cache) |
(→Add a second instance of Redis) |
||
Line 114: | Line 114: | ||
===Add a second instance of Redis=== | ===Add a second instance of Redis=== | ||
+ | |||
+ | Redis is single-threaded so it’s performance peaks when it uses one full CPU core. On a multi-core machine (every machine these days) your peak performance with Redis will be higher if you can use multiple cores. Also, there will be no waiting between different processes. E.g. while one process may be fetching the config, another would be waiting to load a session and another would be waiting to load a FPC record. By having each on a separate core you have much higher peak performance and less contention. | ||
cp redis.conf redis2.conf && cp /etc/init.d/redis /etc/init.d/redis2 | cp redis.conf redis2.conf && cp /etc/init.d/redis /etc/init.d/redis2 |
Revision as of 16:40, 24 December 2013
Install Redis Full Page Caching for Magento Enterprise
How to install redis for full page caching? You see alot of talk about using apc for Magento caching, but if you are looking for a stable caching, then redis is for you.
1) Install Redis and phpRedis
This can be done using yum, which makes this step pretty easy.
yum install redis php-pecl-redis
service redis start
chkconfig redis on
Now to verify that redis is chkconfig on
chkconfig --list redis
2) Install Cm_Cache_Backend_Redis Magento Extension
This is the extension that is required on versions of CE 1.7.0.2 and older, as Magento 1.8.0.0 it comes pre installed.
wget -O Cm_Cache_Backend_Redis.tar.gz https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tarball/master
tar xzf Cm_Cache_Backend_Redis.tar.gz
cd colinmollenhour-Cm_Cache_Backend_Redis-9bd58d2/
cp Cm_Cache_Backend_Redis/Cm /path/to/magento/app/code/local/
cp Cm_Cache_Backend_Redis/lib/Credis /path/to/magento/lib/
cat > /path/to/magento/app/etc/modules/Cm_Cache.xml <<eof <?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Cm_Cache> <active>true</active> <codePool>local</codePool> </Cm_Cache> </modules> </config> eof
3) Install Credis Library
Again not needed if you are using Magento 1.8.0.0 or higher, as its already included in the base install
wget -O credis.tar.gz https://github.com/colinmollenhour/credis/tarball/master
tar xzf credis.tar.gz
cd colinmollenhour-credis-5a48ac8/
cp ./* /path/to/magento/lib/Credis/
cd /path/to/magento/
chown -R username. lib/Credis/
chown -R username. app/code/local/Cm/
chown -R username. app/etc/modules/Cm_Cache.
4) Configure Magento to use Redis for Full Page Caching
I recommend always making a backup copy of your local.xml file before making any changes to it
cp app/etc/local.xml app/etc/local.xml-bk-date
Now lets install redis as a backend cache
vim app/etc/local.xml
Now add the following to your configuration
<full_page_cache> <backend>Cm_Cache_Backend_Redis</backend> <backend_options> <server>127.0.0.1</server> <port>6379</port> <persistent></persistent> <password></password> <force_standalone>0</force_standalone> <connect_retries>1</connect_retries> <lifetimelimit>57600</lifetimelimit> <compress_data>0</compress_data> </backend_options> </full_page_cache>
Clearning your Magento Cache
Now the last step is a giving, any time you make any changes to your Magento configuration/template is to clear your sessions and cache. You do NOT want problems later, because you forgot to clear them and you now find a problem. Sometimes problems show their heads up to a week or so, so clear cache/session and see if you have any problems/issues.
If you were using files prior to the change
rm -r /path/magento/var/session/* /path/magento/var/cache/*
If you were using memcache prior to change
echo "flush_all" | nc 127.0.0.1 11211
or if using a sock
echo "flush_all" | nc -U /path/to/socket
How to flush your Redis Cache
Now you will want to flush your redis cache anytime you make a change to your site. The fastest way to do this is to run the following command via the command line.
echo 'flushall' | redis-cli -h 127.0.0.1 -p 6379
Add a second instance of Redis
Redis is single-threaded so it’s performance peaks when it uses one full CPU core. On a multi-core machine (every machine these days) your peak performance with Redis will be higher if you can use multiple cores. Also, there will be no waiting between different processes. E.g. while one process may be fetching the config, another would be waiting to load a session and another would be waiting to load a FPC record. By having each on a separate core you have much higher peak performance and less contention.
cp redis.conf redis2.conf && cp /etc/init.d/redis /etc/init.d/redis2
Change
vim /etc/init.d/redis2 pidfile="/var/run/redis/redis.pid" to pidfile="/var/run/redis/redis2.pid" REDIS_CONFIG="/etc/redis.conf" to REDIS_CONFIG="/etc/redis2.conf"
Change
vim /etc/redis2.conf port 6379 to port 6380 unixsocket /tmp/redis.sock to unixsocket /tmp/redis2.sock
service redis2 start
Let also make this instance start up on boot
chkconfig redis2 on
Now verify its set to start at boot
chkconfig --list redis2
redis2 0:off 1:off 2:on 3:on 4:on 5:on 6:off