【问题标题】:eliminating memcached's 30-day limit消除 memcached 的 30 天限制
【发布时间】:2011-04-07 10:31:22
【问题描述】:

为什么 memcached 对缓存条目的生命周期施加 30 天的限制?

在我的系统中,我总是将生命周期设置为 30 天,因为这是允许的最大值。将其设置为远大于 30 天的值对于我的应用来说是理想的。

有没有办法将“30 天”值更改为其他值?

我正在考虑下载 memcached 源并重新编译它以供我自己使用。我要么将“30”更改为“300”,要么完全摆脱该检查。如果我这样做,我是否会更改一些会导致 memcached 出现故障或性能不佳的东西?我的期望是允许项目在缓存中保留更长时间,并且当缓存已满时,这些项目将从缓存中删除。

【问题讨论】:

  • 为什么 30 天的限制是个问题?它会引起问题吗?

标签: memcached


【解决方案1】:

30 天是我们从现在开始将您指定的时间视为 TTL 的限制。

如果您想要超过 30 天,没关系,只需使用绝对时间 (time() + whatever)。

如果您不想像 ConroyP 所说的那样基于时间过期,只需使用 0

【讨论】:

  • 你能补充更多细节吗?在这里考虑我的问题:magento.stackexchange.com/questions/5925/…
  • 这解释了它 - 谢谢!我刚刚阅读了学说/缓存源,无法弄清楚为什么他们以这种方式检查持续时间,很高兴找到解释。
【解决方案2】:

30 天是您可以指定到期的最长时间,但如果您考虑完全取消到期检查,将到期时间设置为 0 不是更简单吗?这应该意味着数据会一直存储到缓存已满,然后将其删除以允许插入较新的项目。

来自PHP Memcache docs

参数expire是以秒为单位的过期时间。如果为 0,则该项目永不过期(但 memcached 服务器不保证始终存储该项目,可以将其从缓存中删除,为其他项目腾出位置)。

【讨论】:

    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多