第一步:安装redis-server

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

第二步:安装Cm_Cache_Backend_Redis,开启RedisSession

Magento CE 1.9自带了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中配置redis:cache 、redis_session 、session_save。

配置了Redis的local.xml:

    <cache>
          <backend>Cm_Cache_Backend_Redis</backend>
          <backend_options>
            <server>10.0.30.168</server> <!-- or absolute path to unix socket -->
            <port>6379</port>
            <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 -->
            <database>0</database> <!-- Redis database number; protection against accidental data loss is improved by not sharing databases -->
            <password></password>  <!-- Specify if your Redis server requires authentication -->
            <force_standalone>0</force_standalone><!-- 0 for phpredis, 1 for standalone PHP -->
            <connect_retries>1</connect_retries><!-- Reduces errors due to random connection failures; a value of 1 will not retry after the first failure -->
            <read_timeout>10</read_timeout><!-- Set read timeout duration; phpredis does not currently support setting read timeouts -->
            <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, lz4 (as l4z) and snappy -->
            <use_lua>0</use_lua><!-- Set to 1 if Lua scripts should be used for some operations -->
        </backend_options>
    </cache>
    <session_save>db</session_save>
    <redis_session>
        <!-- All options seen here are the defaults -->
        <host>10.0.30.168</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>
        <db>0</db>
        <compression_threshold>2048</compression_threshold>
        <compression_lib>gzip</compression_lib>
        <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>
        <break_after_frontend>5</break_after_frontend>
        <break_after_adminhtml>30</break_after_adminhtml>
        <bot_lifetime>7200</bot_lifetime>
    </redis_session>

session_save改为db,之前是files。也就是说,magento默认将session相关的数据存在文件系统。

第四步:清理magento缓存

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

另外,也可以进入系统后台缓存页面处理。

第五步:验证安装结果

至此,Magento使用Redis作为缓存就已经配置好了。

为了确保已经生效,查看一下缓存的内容

方法一:可以进入redis命令行

# redis-cli

# select 0

# keys *

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

方法二:使用PHP脚本查看

<?php
   //连接本地的 Redis 服务
   $redis = new Redis();
   $redis->connect('10.0.30.168', 6379);
   //查看服务是否运行
   echo "Server Status: " . $redis->ping();
   // 获取数据并输出
   $arrList = $redis->keys("*");
   echo "Stored keys: </br>";
   print_r($arrList);

第六步:magento中使用redis缓存

$redis = Mage::getModel('Cm_RedisSession_Model_Session');
//write
$writeResult = $redis ->write('test_id','test data');//return bool
var_dump($writeResult );
//read
$result= $redis ->read('test_id');
var_dump($result);//return 'test data'

发表评论

电子邮件地址不会被公开。 必填项已用*标注