Сбрасывать ключи memcache из консоли GAE SDK? - PullRequest
1 голос
/ 09 марта 2009

В "Memcache Viewer" есть ли способ вывести список существующих ключей? Разумеется, только для отладки, а не для использования в любых скриптах!

Я спрашиваю, потому что не похоже, что GAE SDK использует "настоящий" сервер memcache, поэтому я предполагаю, что он эмулируется в Python (для простоты, поскольку это просто сервер разработки) .. Это будет означать, что где-то есть диктат с ключами / значениями ..

Ответы [ 5 ]

8 голосов
/ 09 марта 2009

Люди часто просят об этом в списке memcached, иногда с одним и тем же типом "на всякий случай, если я захочу посмотреть вокруг, чтобы что-то отладить".

Лучший способ справиться с этим - узнать, как вы генерируете свои ключи, и просто искать информацию, когда вы хотите узнать, что хранится для данного значения.

Если у вас слишком много вещей, использующих memcached для этого в рамках вашего сеанса отладки, тогда начните регистрировать доступ.

Но имейте в виду - memcached работает быстро, потому что он вообще не допускает таких вещей. Сервер сообщества имеет ограниченную функциональность для получения подмножества ключей, доступных в данном классе slab, но это, вероятно, не то, что вы действительно хотите, и, надеюсь, Google не реализует его в своих. :)

4 голосов
/ 09 марта 2009

Нет. В memcached я тоже не нашел такой функциональности.

Думая об этой проблеме, я нашел это ограничение понятным - для этого потребуется вести реестр ключей со всеми связанными проблемами, такими как истечение срока действия ключа, аннулирование и, конечно, блокировка. Такая система не будет такой быстрой, как предполагается для memcache.

0 голосов
/ 02 марта 2011

Вот возможный обходной путь. Я не знаком с 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

Спасибо Посту Грэма Кинга в блоге за этот хороший маленький рецепт.

0 голосов
/ 19 марта 2009

Самым простым способом, который я мог придумать, было бы сохранение ключа memcache с известным идентификатором, а затем добавление к нему при каждом добавлении нового ключа. Таким образом, вы можете просто запросить один ключ, чтобы получить список существующих ключей.

0 голосов
/ 09 марта 2009

Memcache разработан, чтобы быть быстрым, и для этой функции нет убедительного варианта использования что оправдывает накладные расходы, необходимые для команды, которая расходится с остальной частью memcached.

GAE SDK имитирует memcached, поэтому он также не предлагает эту функцию.

...