#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. Джон правильно прочитал документ. В настоящее время это невозможно сделать.