【问题标题】:memcached expiring before timememcached 提前过期
【发布时间】:2011-08-22 04:43:48
【问题描述】:

我正在尝试使用 Memcached 来缓存所有多语言字符串,而不是对所有 PHP 页面使用大数组。

我所做的是从数据库中获取翻译后的短语,并在循环中将每个短语设置为 memcached:

while (fetching database) {
$memcached->set($language.':'.$string_id, $translation, 0, 0);
}

问题是,它们中的大多数(不是全部,似乎是随机的)在之后自动“过期”,不知道为什么。
这些是我的统计数据:

服务器当前可用内存:超过 1GB
Memcached 总空间:16MB
当前使用的 Memcached:2.66MB

当我运行循环时,“驱逐”统计数据(删除项目以释放​​新项目的内存)增加分配。这对我来说没有多大意义,因为我设置为永不过期,而且 memcached 仍然有很多可用空间。

有人知道会发生什么吗?
谢谢。

【问题讨论】:

    标签: memcached


    【解决方案1】:

    0 不是 30 天,而是 0(即不会过期)。

    16MB 不够用。您正在非常快速地烧毁您的一个平板并试图将数据存储到另一个平板中并且没有任何空间。

    如果您真的希望它在 16MB 以内,您可以调整板块以使其具有固定大小。只是给它足够的内存来处理你不同的数据大小可能要容易得多。

    【讨论】:

    • 抱歉,我现在注意到我在 php.net 中读错了关于“0”是“30 天”的内容。我在上面解决了我的问题,谢谢。无论如何,你能解释一下(或给我一个链接)关于那些“板”的事情吗?语言短语不超过 16MB,我敢肯定!它们只有大约 2MB。再次感谢您。
    • Dustin,我发现了这个:mikeperham.com/2009/06/22/slabs-pages-chunks-and-memcached - 这很好地解释了什么是平板。我现在明白你的意思了。谢谢!
    猜你喜欢
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多