专用的memcache项目消失了

时间:2013-12-18 15:51:08

标签: php google-app-engine

我在Google App Engine上用PHP构建了一个应用程序,为了提高性能,我们开始使用memcache来缓存模板。它的效果非常好,但我开始看到几个小时后项目从共享缓存中消失了。

文档说明共享内存缓存是在尽力而为的基础上提供的,如果内存成为问题,项目将会过期。为了清楚起见,我们存储了大约20个键值/值对,每个键值/值对大约为10k。

因此,假设这些项目已过期,因为它位于共享内存缓存中,我已将其升级为1 Gig专用内存缓存,用于我们的应用程序。

我的代码非常简单直接:

$memcached = new Memcached();
$memcached->set('mykey', 'mydata', 1296000);

以上代码应设置该密钥和数据,有效期为15天。 GAE文档表明最长为30天。

当我运行代码时,它运行良好并按预期设置键/数据。但是当我早上睡觉醒来时,应用程序管理员的memcache查看器会说什么?

  

最早项目年龄:1小时46分钟25秒(s)

到底是什么?没有代码正在刷新或删除,它是一个专用的内存缓存。

我做错了什么?看起来好像是导致memcache过早失效的东西。这是一个非常小的应用程序,所以从我设置它到我检查它的时间(根据日志),只有1次访问(大约1小时46分钟前)。

当实例关闭时,如果它是最后一个驻留实例,它会清除内存缓存吗?

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

这种情况每晚都会发生吗?你可能只是运气不好。

如果重新启动后端服务器,将刷新缓存。例如对于软件更新,服务器崩溃。

Memcache没有写入磁盘,所以你的代码需要处理这种情况,但它应该不经常发生。

答案 1 :(得分:1)

可能不是您认为的那个,该字段可能不是您商品消失的指标。

  

一个特别有趣的统计数据是“最早的项目年龄。”这有点用词不当:它实际上是自上次访问最近最少访问的项目以来的时间量,而不是该项目的完整年龄。

这不是GAE文档,我在Programming Appengine book中找到了这个。