Какие объекты разрешены в GAE Memcache - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь понять, какие объекты могут храниться в Java Memcache, но не могу найти прямые ответы.

Я пытался сохранить ConcurentHashMap в Memcache, где ConcurentHashMap имеет каждое значение, являющееся другим ConcurentHashMap до5 уровней.

Это был дизайн раньше, и я хотел внести как можно меньше изменений.

Однако я обнаружил странную проблему:

java.lang.IllegalArgumentException: Нельзя использовать в качестве значения: 'com.xx.xxxx@1a55d9d' на com.google.appengine.api.memcache.AsyncMemcacheServiceImpl.serializeValue (AsyncMemcacheServiceImpl.java:283) на сайте com.google.AsyncMemcacheServiceImpl.doPut (AsyncMemcacheServiceImpl.java:516) по адресу com.google.appengine.api.memcache.AsyncMemcacheServiceImpl.put (AsyncMemcacheServiceImpl.java:591.mache.Imp.Mache.Mache.Mache.Mache.Mache.Mache.Mache.Mache.Mache.Mache.Map.Mac.Mac.Map.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Mac.Cg.dll79)

Я встроил ConcurrentHashMap в класс и передал его Memcache.С обычным ConcurrentHashMap я столкнулся с той же проблемой.

Я просматривал разные форумы, но не смог найти ответ на вопрос, какие объекты можно хранить в Memcache, особенно из коллекций Java и подобных объектов (ConcurrentHashMap).Какие типы сложных Java-объектов я могу сохранить в Memcache?

Еще один вопрос, который у меня возникает, - что произойдет, когда я снова разверну новую версию в GAE?Уничтожены ли ранее сохраненные в Memcache значения?

1 Ответ

0 голосов
/ 07 июня 2018

Memcache обычно допускает любые сериализуемые объекты.Классы должны будут реализовать Serializable, чтобы Java обрабатывал сериализацию.В случае хранения коллекций или других структур данных объекты в структуре данных также должны быть сериализуемыми.

public class MyClass implements Serializable { }

Все версии вашего приложения используют один и тот же memcache.Кэш является глобальным и совместно используется внешним интерфейсом приложения, внутренним сервером и всеми его службами и версиями.Смотрите Appengine Memcache

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...