2014-12-18 2 views
-1

Есть ли способ хранить и извлекать метаданные по паре ключ-значение в memcache в Google App Engine с использованием Java?Сохранение метаданных в memcache Google App Engine с использованием Java

Я пытался кэшировать объект размером более 1 МБ в виде нескольких сегментов 1 МБ и хранить количество сегментов в метаданных.

+0

Можете уточнить, что вы пытаетесь сделать? –

+0

@MishaBrukman Отредактированный вопрос с тем, что я пытался реализовать. Все еще ничего не нашли. – genirahul

ответ

0

Рассмотрите возможность создания специальных клавиш, которые используют символы, которые иначе не отображаются в ваших обычных ключах, например, путем добавления суффикса к ключам, так что они не конфликтуют с обычными ключами.

Например, предположим, что ваши ключи соответствуют регулярному выражению [A-Za-z0-9]+; то вы можете взять свой ключ, например foobar42, и создать специальный ключ метаданных, например foobar42#metadata, который, как вы знаете, не может быть действительным ключом.

Затем, когда вы храните ключ foobar42 с некоторой произвольной величиной, сначала необходимо создать ключ foobar42#metadata и хранить специальный блок там, например, JSON или буфер протокола, который говорит, что вы можете найти куски значения в foobar42#chunk-0, foobar42#chunk-1 и т. Д.

Аналогично, когда вы просматриваете или удаляете ключ, сначала посмотрите, есть ли ключ метаданных, и если да, используйте дополнительную логику для объединения (если поиск) или удаления дополнительных записей, поэтому вы не оставляя многожильные данные, занимающие дополнительное пространство.

+0

@MishaBurkman Вместо специального блока, который вы упомянули здесь, я сохранил общий размер вместе с фактическими данными в memcache, чтобы определить общее количество кусков во время выполнения. Следующее аналогичное соглашение об именах. Спасибо за предложение. – genirahul

Смежные вопросы