我在Google App Engine上构建了一个PHP应用程序,为了提高性能,开始使用memcache来缓存模板。它的预期效果非常好,但是我开始发现几小时后,这些物品正从共享缓存中消失。专用memcache项目消失
该文档指出共享内存缓存是尽力而为的,如果内存成为问题,项目将过期。要清楚的是,我们正在存储大约20个每个大约10k的键/值对。
因此,假设这些项目因共享内存缓存而过期,我已升级到适用于我们应用程序的1千兆位专用内存缓存。
我的代码是非常简单和直接的:
$memcached = new Memcached();
$memcached->set('mykey', 'mydata', 1296000);
上面的代码应设置该密钥和数据的15天到期。 GAE文件表明最长为30天。
当我运行代码时,它的效果很好,并按预期设置了键/数据。但是,当我在早上睡觉并醒来时,应用程序管理员中的memcache查看器会说什么?
最旧的项目年龄:1小时(一个或多个)46分钟(S)26秒
什么赫克?没有任何代码正在刷新或删除,这是一个专用的内存缓存。
我在做什么错?它确实看起来像是导致memcache过早失效。这是一个非常低量的应用程序,所以从我设置这个时间到检查它(根据日志)时,只有1次访问(大约1小时46分钟前)。
如果实例关闭,如果它是最后一个驻留实例,它是否清除memcache?
感谢您提供的任何帮助。
看起来很奇怪。尝试将其设置为“0”以查看这些项目是否永久缓存。顺便说一下,30天的时间应该是使用秒数时的最大值。使用时间映射可以设置更大的过期时间 – tlenss