Как экспортировать все ключи и значения из memcached с помощью python-memcache? - PullRequest
11 голосов
/ 20 апреля 2011

Я хотел бы экспортировать все ключи и значения с сервера memcached, используя python-memcache. В этом модуле такой функции нет. Как это сделать тогда?

Возможно, понадобится нечто более сложное с модулем "сокет".

Ответы [ 7 ]

22 голосов
/ 25 января 2012

Это даст вам все ключи на сервере memcached, вы можете использовать любую клиентскую библиотеку memcached для получения значения для каждого ключа.

13 голосов
/ 24 января 2013

используйте утилиты memdump и memcat из набора libmemcached .Они не могут гарантировать, что вы получите все данные, но они просты в использовании.

Примечание: В Ubuntu / Debian вы можете получить их, вставив пакет libmemcached-tools иони называются memcdump и memccat.

сбросить все ключи:

memcdump --servers=localhost

сбросить все значения:

memccat --servers=localhost `memcdump --servers=localhost`

конечно, вы все равно должны соответствоватьдо ключей и значений - я бы предложил сбросить ключи в файл и затем использовать его в качестве ввода для memcat (это обеспечивает согласованность).Затем, конечно, вам нужно разделить значения - точным разделителем, как я полагаю, является точка остановки, а затем последовательно соединить ключи и значения.Возможно, где-то есть сценарий ...

6 голосов
/ 20 апреля 2011

Нет способа сделать это. Протокол Memcache не определяет команды для перебора ключей.Вы должны знать ключ для получения значения.

0 голосов
/ 03 марта 2018

В Bash этот скрипт может помочь:

while read -r key; do
    memccat --servers=localhost $key > "$key.dump";
done < <(memcdump --server localhost)

Вместо memccat вы также можете напрямую подключиться к порту и отправить команду get SOME-KEY (пример с использованием Netcat: echo "get $key" | nc localhost 11211).

Связанный:

0 голосов
/ 07 февраля 2017

Самый простой способ - использовать пакет python-memcached-stats, https://github.com/abstatic/python-memcached-stats

Метод keys () должен помочь вам.

0 голосов
/ 05 января 2015

Как уже упоминалось другими во многих местах, в общем случае нет способа перечислить все ключи, которые хранятся в экземпляре memcached. Например, Memcached: список всех ключей , Не удалось получить все ключи memcache через клиент telnet

Однако вы можете перечислить что-то вроде первого 1Meg ключей, чего обычно достаточно, чтобы иметь представление о том, что хранится на сервере memcache во время разработки. В принципе, у вас может быть две опции для извлечения элементов с сервера memcache:

(1) Чтобы получить подмножество ключей и значений, вы можете использовать метод, представленный выше, используя @ lrd

Однако, когда данные очень велики (например, миллионы записей), этот метод может быть очень трудоемким. Более того, этот метод может извлечь только подмножество ключей и значений.

(2) В тех случаях, когда вы хотите перебрать все элементы сервера memcached, регистрация ключей при добавлении / установке / cas элементов на сервер memcache является гораздо более дешевым решением. Затем вы можете прочитать файл журнала, чтобы получить все ключи и получить значения с сервера memcache. Как обсуждалось в этом списке рассылки: Список всех объектов в memcached

0 голосов
/ 20 апреля 2011

Вы ищете команду memcache 'flush_all': http://code.google.com/p/memcached/wiki/NewCommands#flush_all

С python-memcached это выглядит примерно так:

>>> import memcache
>>> c = memcache.Client(('127.0.0.1:11211',))
>>> c.flush_all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...