Как вернуть все значения, хранящиеся в memcache?

#java #google-app-engine #memcached

#java #google-app-engine #memcached

Вопрос:

Как можно вернуть все значения, хранящиеся в memcache? Я пытался использовать методы entrySet() и values() в кэше, но оба приводят к java.lang.Исключение UnsupportedOperationException.

В идеале мне нужно вернуть все объекты, хранящиеся в кэше, и массово сохранить их в хранилище данных — возможно ли это?

Спасибо

Комментарии:

1. Чисто из болезненного любопытства, почему вы хотите это сделать?

2. У меня есть ресурс, который запрашивается очень часто, этот ресурс выполняет 3 получения данных и 3 ввода. В результате я использую огромное количество RPC хранилища данных каждый день и хочу уменьшить это. Мой план состоял в том, чтобы хранить объекты в memcache в течение нескольких минут (обновляя объекты при необходимости), а затем сохранять их в хранилище данных. Затем я бы очистил кеш и снова перезапустил процесс.

3. Как я уже упоминал в другом вопросе, вы действительно не хотите этого делать — высока вероятность потери данных.

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

5. В таком случае вы, вероятно, захотите прочитать это сообщение в блоге: blog.notdot.net/2010/04 /…

Ответ №1:

Учитывая MemcacheService низкоуровневую документацию, я не думаю, что это возможно сделать.

Это также поддерживается разделом «Функции JCache, не поддерживаемые» документации:

Приложение не может выгрузить содержимое ключей или значений кэша.

(Примечание: я работаю в Google. но, пожалуйста, не воспринимайте это как ответ от Google. Я сам не часто использовал AppEngine.)

Комментарии:

1. Джон правильно прочитал документ. В настоящее время это невозможно сделать.