【发布时间】:2009-03-09 07:49:02
【问题描述】:
在“Memcache Viewer”中,有没有办法转储现有键的列表?当然,仅用于调试,不能用于任何脚本!
我问是因为 GAE SDK 似乎没有使用“真正的”memcache 服务器,所以我猜它是用 Python 模拟的(为简单起见,因为它只是一个开发服务器)。这意味着那里是带有键/值的某个地方的字典..
【问题讨论】:
标签: python google-app-engine memcached
在“Memcache Viewer”中,有没有办法转储现有键的列表?当然,仅用于调试,不能用于任何脚本!
我问是因为 GAE SDK 似乎没有使用“真正的”memcache 服务器,所以我猜它是用 Python 模拟的(为简单起见,因为它只是一个开发服务器)。这意味着那里是带有键/值的某个地方的字典..
【问题讨论】:
标签: python google-app-engine memcached
人们经常在 memcached 列表中提出这个要求,有时带有相同类型的“以防万一我想环顾四周以调试某些东西”的情绪。
处理这个问题的最好方法是知道你是如何生成你的密钥的,当你想知道为给定值存储了什么时,就去查找资料。
如果您在调试会话范围内使用 memcached 执行的操作太多,请开始记录访问。
但请记住——memcached 速度很快,因为它通常不允许这样的事情。社区服务器确实具有有限的功能来获取给定平板类中可用的密钥子集,但这可能不是您真正想要的,希望谷歌不会在他们的服务器中实现它。 :)
【讨论】:
没有。我也没有在 memcached 中找到这样的功能。
考虑到这个问题,我发现这个限制是可以理解的——它需要保留一个包含所有相关问题的密钥注册表,例如密钥过期、失效,当然还有锁定。这样的系统不会像 memcache 预期的那样快。
【讨论】:
Memcache 的设计速度很快,并且没有令人信服的用例来支持此功能 这将证明与 memcached 的其余部分如此不一致的命令所需的开销是合理的。
GAE SDK 正在模拟 memcached,因此它也不提供此功能。
【讨论】:
我能想到的最简单的方法是在已知 ID 处维护一个 memcache 键,然后在每次插入新键时附加到它。这样,您只需查询单个键即可获取现有键的列表。
【讨论】:
这是一个可能的解决方法。我对 Google App Engine 不熟悉,但在常规的内存缓存服务器上,您可以通过 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 提供了这么好的小食谱。
【讨论】: