2011-05-10 85 views
0

我想使用Memcached来缓存所有多语言字符串,而不是使用大数组来处理所有PHP页面。memcached在时间之前过期

我做的,是从数据库中读取的已翻译短语,并且在环路中的每个,我设置的memcached:

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

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

服务器的当前可用内存:1GB以上
总Memcached的空间:16MB
目前memcached的使用:2.66MB

的“驱逐”统计(已删除项目为可用内存新的项目)增加分配,当我运行周期。这对我来说没有什么意义,因为我设置为永不过期,并且memcached仍有很多可用空间。

有谁知道可能发生了什么?
谢谢。

回答

1

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

16MB是不够的工作。你正在快速地吹掉你的一块板,试图将数据存储到另一块板上,而没有任何空间。

如果你真的想要这个适合在16MB以内,你可以调整板,让他们是一个固定的大小。只需要足够的内存来处理您的各种数据大小,可能要容易得多。

+0

对不起,我现在注意到我在php.net中错误地阅读了关于“0”是“30天”的内容。我在上面解决了我的问题,谢谢。无论如何,你能否解释我(或给我一个链接)关于那些“板块”的东西?语言短语不超过16MB,我相信!他们只有大约2MB。再次感谢你。 – Nuno 2011-05-10 07:52:07

+1

达斯汀,我发现这个:http://www.mikeperham.com/2009/06/22/slabs-pages-chunks-and-memcached/ - 它很好地解释了我是什么板。我明白你的意思了。谢谢! – Nuno 2011-05-10 15:35:42

相关问题