Как Вы работаете вокруг ограничений ключа/значения memcached?

Можно запустить любую программу командной строки с помощью класса Процесса и установить свойство StandardOutput экземпляра Процесса с потоковым читателем, которого Вы создаете (или на основе строки или на основе ячейки памяти). После того, как процесс завершается, можно тогда сделать любую разность, Вы должны на том потоке.

15
задан mjy 14 July 2009 в 14:32
поделиться

4 ответа

Сервер уже позволяет вам указать любой размер, который вы хотите:

-I            Override the size of each slab page. Adjusts max item size
              (default: 1mb, min: 1k, max: 128m)

Однако в большинстве случаев, когда люди хотят кэшировать более крупные объекты, они делают что-то неправильно. Вам действительно нужно столько данных в одном ключе кеша? Несжатый?

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

Это зависит от ваших потребностей, и я не могу сказать вам, что лучше для вас, не зная больше о том, что вы делаете. Если вам действительно нужно что-то больше 1 МБ, поэтому мы добавили -I .

20
ответ дан 1 December 2019 в 02:46
поделиться

For values that were too large, instead of storing a standard value (which, when decoded, was always a dictionary) we stored a list of keys. We then read the data in each key, and restored the main value. I think we also hashed the keys when they were too long (which in our dataset could happen, but extremely rarely).

We did write all this code directly on top of the memcached client (we were using Python), so at a higher level it was all transparent.

0
ответ дан 1 December 2019 в 02:46
поделиться
$key=abs(crc32($long_key))

Таким образом, вы получаете уникальный ключ для запросов и другие длинные ключи, которые могут иметь изменения, превышающие 250 символов, которые видит memcache.

-2
ответ дан 1 December 2019 в 02:46
поделиться

$key=abs(crc32($long_key))

Таким образом, вы получаете уникальный ключ для запросов и других длинных ключей, которые могут иметь изменения, выходящие за пределы 250 символов memcache видит.

Стоп... осторожно. Хороший совет, но без важной оговорки. Это может привести к коллизиям. Конечно, это крайне маловероятно, но это должно произойти только один раз, чтобы вызвать сокрушительную ошибку. Вы все равно, вероятно, захотите хранить длинный ключ в memcached и всегда дважды проверять его на наличие коллизий. Лучшим способом борьбы с ними будет хранение простого списка пар длинный_ключ/значение.

9
ответ дан 1 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: