App Engine内存缓存速度“dict”vs“Class Object”

时间:2011-10-05 10:57:06

标签: python google-app-engine

我有95%流量的页面处理程序,它使用其键从DB获取模型,然后使用获取模型中的字段来填充django模板。

我想记忆所提取的模型,以避免DB读取。并非模型中的所有字段都在模板中使用,因此我希望仅使用所需的字段来缓存它,以便提高缓存利用率并在缓存中容纳更多此类模型。

所以我想在一个字典或'class boject'中转换模型只包含模板中所需的字段。

Memcache使用pickle来序列化值,因此为了序列化的目的,这将是更快的字典或'类对象'??

3 个答案:

答案 0 :(得分:2)

既不!相反,将实体协议缓冲区缓存为described here

您可能需要考虑切换到NDB,它已内置支持memcaching模型实例。

答案 1 :(得分:1)

您需要测量但是出于所有预期目的,结果应该是大约相同的速度 如果任何方法往往更快,我真的不认为它会对你的整体表现产生太大的影响。 你的主要延迟将是对memache的RPC调用,这可能比最慢的序列化慢两倍。

答案 2 :(得分:1)

您应该考虑在模型类上定义__getstate__ / __setstate__方法,这样您就可以只选择模型中要缓存的属性,并简化验证过程;你的unpickled数据作为模型的实际实例到达而不是支持你必须以某种方式以另一种方式转换。

相关问题