使用内存缓存进行会话存储

Memcached是一种通用分布式内存缓存系统。 它通常用于通过在RAM中缓存数据和对象来加快动态数据库驱动网站的速度,以减少必须读取外部数据源(如数据库或API)的次数。

Memcached提供了一个可在多台计算机上分发的大型哈希表。 当表已满时,后续插入会导致按最近使用最少(LRU)的顺序清除旧数据。 此哈希表的大小通常非常大。 (Source: memcached.org)

Commerce将memcached用于会话存储,但不用于页面缓存。 对于页面缓存,我们建议RedisVarnish

要将Commerce配置为使用memcached

  1. 在文本编辑器中打开<your install dir>/app/etc/env.php

  2. 找到以下内容:

    code language-php
    'session' =>
        array (
        'save' => 'files',
    ),
    
  3. 按如下方式更改:

    code language-php
    'session' =>
        array (
          'save' => 'memcached',
          'save_path' => '<memcache ip or host>:<memcache port>'
    ),
    

    memcached具有本指南范围之外的启动参数。 您可以在memcached文档、源代码和更改日志中找到有关它们的更多信息。

  4. 继续下一部分。

要验证memcached是否可用于Commerce

  1. 删除Commerce安装目录下以下目录的内容:

    code language-bash
    rm -rf var/cache/* var/page_cache/* var/session/*
    
  2. 前往店面上的任何页面。

  3. 登录到管理员并浏览多个页面。

    如果没有显示错误,恭喜您! memcached正在工作! 您可以选择查看内存缓存存储,如下一步骤中所述。

    如果显示错误(如HTTP 500(内部服务器错误)),请启用开发人员模式并诊断问题。 确保memcached正在运行,配置正确,env.php没有语法错误。

  4. (可选。) 使用Telnet查看内存缓存存储。

    code language-bash
    telnet <memcached host or ip> <memcached port>
    
    code language-bash
    stats items
    

    结果显示类似以下内容:

    code language-none
    STAT items:3:number 1
    STAT items:3:age 7714
    STAT items:3:evicted 0
    STAT items:3:evicted_nonzero 0
    STAT items:3:evicted_time 0
    STAT items:3:outofmemory 0
    STAT items:3:tailrepairs 0
    
    [Look at the keys in more detail](https://darkcoding.net/software/memcached-list-all-keys/)
    
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c