从GAE SDK控制台转储内存缓存密钥?

时间:2009-03-09 07:49:02

标签: python google-app-engine memcached

在“Memcache Viewer”中,有没有办法转储现有密钥列表?当然,仅用于调试,不用于任何脚本!

我问,因为GAE SDK似乎不是使用“真正的”memcache服务器,所以我猜它是用Python模拟的(为简单起见,因为它只是一个开发服务器)..这意味着那里是某个带键/值的字典..

5 个答案:

答案 0 :(得分:8)

人们在memcached列表上要求很多,有时使用相同类型的“以防万一我想调查一下”的情绪。

处理此问题的最佳方法是了解如何生成密钥,当您想知道为给定值存储的内容时,只需查看内容即可。

如果在调试会话范围内使用memcached做太多事情,那么就开始记录访问权限。

但请记住 - memcached很快,因为它一般不允许这样的事情。社区服务器确实具有有限的功能来获取给定slab类中可用的键的子集,但它可能不是你真正想要的,并且希望google不会在他们的实现中实现它。 :)

答案 1 :(得分:4)

没有。我在memcached中也没有找到这样的功能。

考虑到这个问题,我发现这个限制是可以理解的 - 它需要保存一个密钥注册表,其中包含密钥到期,失效和当然锁定等所有相关问题。这样的系统不会像memcaches那样快。

答案 2 :(得分:0)

Memcache设计得很快,并且没有令人信服的用例来实现此功能 这将证明命令所需的开销是合理的,因为这与memcached的其余部分不一致。

GAE SDK正在模拟memcached,因此它也不提供此功能。

答案 3 :(得分:0)

我能想到的最简单的方法是将memcache密钥保存在已知ID上,然后在每次插入新密钥时附加到它。这样您就可以查询单个键来获取现有密钥列表。

答案 4 :(得分:0)

这是一个可能的解决方法。我不熟悉Google App Engine,但在常规的memcache服务器上,您可以通过telnet列出所有密钥,如下所示:

telnet 127.0.0.1 11211
stats items
STAT items:7:number 5
STAT items:7:age 88779
STAT items:7:evicted 0
STAT items:7:evicted_time 0
STAT items:7:outofmemory 0
STAT items:7:tailrepairs 0
... etc
END
stats cachedump 7 100
ITEM __builtin__.str_is_browser_supported·user_agent_hash=5706b885fdad3f7049dfb39455dfa7ab10086d97 [269 b; 1298926467 s]
END

感谢Graham King's blog post这个漂亮的小食谱。

相关问题