在“Memcache Viewer”中,有没有办法转储现有密钥列表?当然,仅用于调试,不用于任何脚本!
我问,因为GAE SDK似乎不是使用“真正的”memcache服务器,所以我猜它是用Python模拟的(为简单起见,因为它只是一个开发服务器)..这意味着那里是某个带键/值的字典..
答案 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这个漂亮的小食谱。