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

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

Возможно, потребуется нечто более сложное, связанное с модулем «socket».

6 Solutions collect form web for “Как экспортировать все ключи и значения из memcached с помощью python-memcache?”

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

import telnetlib def get_all_memcached_keys(host='127.0.0.1', port=11211): t = telnetlib.Telnet(host, port) t.write('stats items STAT items:0:number 0 END\n') items = t.read_until('END').split('\r\n') keys = set() for item in items: parts = item.split(':') if not len(parts) >= 3: continue slab = parts[1] t.write('stats cachedump {} 200000 ITEM views.decorators.cache.cache_header..cc7d9 [6 b; 1256056128 s] END\n'.format(slab)) cachelines = t.read_until('END').split('\r\n') for line in cachelines: parts = line.split(' ') if not len(parts) >= 3: continue keys.add(parts[1]) t.close() return keys 

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

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

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

 memcdump --servers=localhost 

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

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

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

Это невозможно. Протокол Memcache не определяет какую-либо команду для итерации по клавишам. Вы должны знать ключ для получения значения.

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

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

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

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

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

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

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

Вы ищете команду 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() 
  • Ошибка при установке pylibmc using pip
  • Memcached получает значение null для String, установленного с помощью python, а затем получает от Java
  • Кэширование Django только для аутентифицированных пользователей
  • Хорошие примеры использования python-memcache (memcached) в Python?
  • Настройка Memcached для кэширования сеансов Django в App Engine
  • Как установить тайм-аут получения Memcached в Django
  • Как проверить содержимое кеша Django с помощью Python memcached?
  • Максимальный размер объекта, который можно сохранить в memcached с помощью memcache.py
  • Поддерживать большой словарь в памяти для Django-Python?
  • Изменения кода Django, не отражающие производственный сервер
  • Использование нескольких серверов memcache в пуле
  • Python - лучший язык программирования в мире.