红联Linux门户
Linux帮助

Magento CE使用Redis的配置过程

发布时间:2016-03-14 10:05:03来源:linux网站作者:烟雨梦江南

第一步:安装redis-server

按照magento官方要求,redis版本至少是2.6.9。对于Ubuntu来说,执行apt-get install redis-server,则直接安装redis 2.8.4。然后在命令行执行redis-server,以启动它的后台。


第二步:安装Cm_Cache_Backend_Redis

国外的文章说Magento CE 1.8之后的源代码中自带了这个模块,但经过我的核实,Magento CE 1.8.1.0确实是没有的。因此需要手动安装。

在https://github.com/colinmollenhour/Cm_Cache_Backend_Redis上下载此模块的源代码,像普通的Magento模块一样装上即可。其实,这个模块只有一个文件,即Cm_Cache_Backend_Redis.php,不需要在app/etc/modules中配置。


第三步:开启RedisSession

Magento CE 1.8.1.0自带了RedisSession模块,需要在app/etc/modules/Cm_RedisSession.xml中启用,即把此文件中的active设置为true,如下所示。

<?xml version="1.0"?>
<config>
<modules>
<Cm_RedisSession>
<active>true</active>
<codePool>community</codePool>
</Cm_RedisSession>
</modules>
</config>


第四步:配置local.xml

在app/etc/local.xml中配置magento使用session作为cache和session的具体参数。

默认的local.xml:

<?xml version="1.0"?>
<config>
<global>
<install>
<date><![CDATA[Tue, 10 Dec 2013 16:55:04 +0000]]></date>
</install>
<crypt>
<key><![CDATA[861433264e3dcac9e0c59e2c5dce710c]]></key>
</crypt>
<disable_local_modules>false</disable_local_modules>
<resources>
<db>
<table_prefix><![CDATA[]]></table_prefix>
</db>
<default_setup>
<connection>
<host><![CDATA[127.0.0.1]]></host>
<username><![CDATA[db_username]]></username>
<password><![CDATA[db_password]]></password>
<dbname><![CDATA[db_name]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
</resources>
<session_save><![CDATA[files]]></session_save>
</global>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>

配置了Redis的local.xml:

<?xml version="1.0"?>
<config>
<global>
<install>
<date><![CDATA[Tue, 10 Dec 2013 16:55:04 +0000]]></date>
</install>
<crypt>
<key><![CDATA[861433264e3dcac9e0c59e2c5dce710c]]></key>
</crypt>
<disable_local_modules>false</disable_local_modules>
<resources>
<db>
<table_prefix><![CDATA[]]></table_prefix>
</db>
<default_setup>
<connection>
<host><![CDATA[127.0.0.1]]></host>
<username><![CDATA[db_username]]></username>
<password><![CDATA[db_password]]></password>
<dbname><![CDATA[db_name]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
</resources>

<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>0</database>
<password></password>
<force_standalone>0</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>

<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>1</database>
<password></password>
<force_standalone>0</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>

<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>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>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>

复制代码

对比以上两个local.xml可以发现,后者比前者多了cache、full_page_cache和redis_session这三个节点;后者的session_save为db,前者的session_save为files。也就是说,magento默认将session相关的数据存在文件系统。


第五步:清理magento缓存

进入var/cache,执行rm –rf *命令,以删除安装redis之前magento产生的所有缓存文件。

另外,最好进入到admin panel,执行一下Flush Magento Cache和Flush Cache Storage。


第六步:验证安装结果

至此,Magento使用Redis作为缓存就已经配置好了,为了确保已经生效,可以进入redis命令行查看一下缓存的内容。

# redis-cli

# select 0

# keys *

以上三条执行可以在redis命令行下看到redis数据库0缓存内容的key。如果安装redis之后,有人访问过你的magento站点,那么最后一条命令就能显示至少好几十个key,仔细看的话就能发现有许多magento特有的关键字。


本文永久更新地址:http://www.linuxdiyf.com/linux/18915.html