如何防止AppEngine内存缓存刷新

时间:2013-10-16 08:41:10

标签: python google-app-engine memcached

我们目前正在使用AppEngine的memcache来存储会话信息(会话令牌)并缓存一些HTML数据。我们的整体内存缓存使用率大部分时间都低于1 MB。

我们如何防止缓存在几分钟后刷新(今天早上我们在40分钟后只有25 KB)。昨天(2013-10-15 21:30 UTC - 2013-10-15 21:45)我们在2到7秒内冲洗了一次(数据低于20 KB)?

2 个答案:

答案 0 :(得分:4)

使用默认的免费内存缓存,您的应用内存数据与其他AppEngine应用的数据一起存储,因此如果其他应用导致可用内存填满,那么您的数据可能与他们的数据一样过期(参见https://developers.google.com/appengine/docs/adminconsole/memcache)。因此,您的应用程序不应期望缓存值始终可用。

但是,您可以将应用配置为使用专用内存缓存(在管理控制台的“应用程序设置”下)。这专用于您的应用程序使用的特定内存,但每小时每GB成本为0.12美元。

答案 1 :(得分:0)

您应该尝试将这些数据持久存储在数据存储区中,并使用memcache获取查询结果,或者如果不在memcache中则设置它。我已经阅读了很多关于“强迫”memcache以不同于其设计的方式执行的内容,但事实上,当你要求获取时,你不可能100%确定你会在那里找到数据。

我尝试过的所有会话处理程序都将令牌存储提供给用户模型for example。 您可以扩展此模型或创建另一个模型来存储HTML。

查看here以了解@webapp2.cached_property

的使用情况