【问题标题】:Is it a bad idea to use a single Redis instance for both session and backend caching in Magento?在 Magento 中为会话和后端缓存使用单个 Redis 实例是不是一个坏主意?
【发布时间】:2018-02-27 16:35:24
【问题描述】:

对于 Magento(v1.9 或更低版本),是否可以将单个 Redis 实例用于会话和后端缓存?是否需要额外的配置?

【问题讨论】:

标签: session magento caching redis magento-1.9


【解决方案1】:

经过进一步研究,似乎对会话和后端缓存使用相同的实例很容易,唯一的潜在问题是空间不足(如果您在 AWS 上使用 ElastiCache,则不是问题)。

也不需要不同的端口号。您只需要指定不同的“数据库编号”。以下是一个示例配置:

  <cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    <backend_options>
      <server>$REDIS_CACHE</server>
      <port>6379</port>
      <persistent></persistent>
      <database>1</database> <!-- DIFFERENT DB NUMBER -->
      <password></password>
      <force_standalone>0</force_standalone>
      <connect_retries>1</connect_retries>
      <read_timeout>10</read_timeout>
      <automatic_cleaning_factor>0</automatic_cleaning_factor>
      <compress_data>1</compress_data>
      <compress_tags>1</compress_tags>
      <compress_threshold>20480</compress_threshold>
      <compression_lib>gzip</compression_lib>
      <use_lua>0</use_lua>
    </backend_options>
  </cache>
  <session_save>db</session_save>
  <redis_session>
    <host>$REDIS_CACHE</host>
    <port>6379</port>
    <password></password>
    <timeout>2.5</timeout>
    <persistent></persistent>
    <db>2</db> <!-- DIFFERENT DB NUMBER -->
    <compression_threshold>2048</compression_threshold>
    <compression_lib>gzip</compression_lib>
    <log_level>1</log_level>
    <max_concurrency>6</max_concurrency>
    <break_after_frontend>5</break_after_frontend>
    <fail_after>10</fail_after>
    <break_after_adminhtml>30</break_after_adminhtml>
    <first_lifetime>600</first_lifetime>
    <bot_first_lifetime>60</bot_first_lifetime>
    <bot_lifetime>7200</bot_lifetime>
    <disable_locking>0</disable_locking>
    <min_lifetime>60</min_lifetime>
    <max_lifetime>2592000</max_lifetime>
  </redis_session>

【讨论】:

  • 请注意,AWS ElastiCache 无法避免空间不足的问题。你有一个固定的节点容量,如果你用完内存条目将被驱逐,就像在自托管 Redis 实例上一样。 ElastiCache 在这方面的所有帮助是在您需要时简化扩展,但这仍然是手动操作(目前还没有真正的自动扩展能力)。
【解决方案2】:

您可以使用单个实例,但您仍然需要为每个实例使用单独的数据存储,例如6379 和 6380 但在同一个 Redis 服务器上。

从 Magento 端拥有单独的实例不需要额外的配置。

【讨论】:

  • 显然我问了一个糟糕的问题。但自从你回答后它不会让我删除它:/
  • 这是边缘,是的。我试图删除我的答案但不能因为你已经接受了:-)
  • 一切都好。我不会再删除这个问题了。如果你问我,我在做更多研究后回答了我自己的问题,并给出了一个很好的答案。我认为这是一个有用的问答。
【解决方案3】:

我会推荐单独的实例。 与具有相同数据库甚至不同数据库的单个实例相比的优势

  1. 空间和配置控制:您不希望注销用户,因为您的缓存占用了过多的 redis 空间。存储一些页面缓存的 redis 对象可能会导致会话数据键被驱逐,这不好。

  2. 键名间距控制:您的键将根据关注点分开,您可以使用诸如刷新之类的方法来清除所有缓存,或在某些重大更改时注销您的用户.而不必按模式删除键。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多