Получить все элементы в кеше - PullRequest
4 голосов
/ 20 сентября 2011

Я недавно запустил Enyim Memcached и работает отлично.Используя библиотеку, я могу без проблем хранить и извлекать элементы.

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

  MemcachedClient client = new MemcachedClient()
  object o = client.Get("key");

Но я не вижу GetAll() или аналогичного метода, я что-то упустил?

Ответы [ 2 ]

6 голосов
/ 21 сентября 2011

Я хочу уточнить ответ Дасуна. Он прав, что нет способа получить все ключи из стандартного memcached, однако есть другие разновидности memcached, которые позволяют вам делать это через потоки крана. Вы можете сделать это, если вы используете сервер Membase (если вы просто используете кеш-память, Membase в значительной степени просто memcached) или вы можете использовать ветку Membase memcached, которую можно найти здесь https://github.com/membase/memcached. Ветвь Membase определенно безопасна для использовать и многие из лучших участников memcached работают для Membase (теперь Couchbase) и вносить материал из этой ветви обратно в основную ветку memcached.

С другой стороны, клиент Enyim не поддерживает API-интерфейс tap, но есть Java, C / C ++, python и клиент ruby, которые поддерживают tap. Что бы вы сделали, это создать поток дампов, и этот поток отправил бы вам все пары ключ-значение memcached / Membase.

2 голосов
/ 21 сентября 2011

Нет, ты не можешь.Memchached не предназначен для этой цели (кэширование не предназначено для извлечения всех элементов, что бессмысленно).

...