Как мне определить, почему Enyim memcache возвращает false при хранении элемента? - PullRequest
11 голосов
/ 26 октября 2011

Как я могу определить, ПОЧЕМУ Enyim возвратил false из следующего вызова:

cache.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value);

Другие элементы хранятся в порядке, так что, похоже, это не проблема с подключением к серверу. Размер объекта не превышает 1 МБ.

Так, как я могу определить, что является причиной ложного?

Ответы [ 4 ]

1 голос
/ 06 октября 2013

Еще одна вещь, которую нужно проверить, это то, что весь сохраняемый вами граф объектов - это [Сериализуемый]. Если это не так, Enyim выдаст исключение сериализации, которое сообщит вам, какой тип должен быть помечен как сериализуемый. Следуйте инструкциям на https://github.com/enyim/EnyimMemcached/wiki/Configure-Logging, чтобы включить ведение журнала.

0 голосов
/ 05 декабря 2011

Memcached ограничивает размер объектов по умолчанию до 1 МБ. Проверьте конфигурацию на вашем memcached сервере. Ограничение настраивается, но его не рекомендуется изменять, так как это повлияет на общую производительность самого сервера.

0 голосов
/ 20 декабря 2011

Мы полностью обернули клиент Enyim для создания статических методов, которые делали правильный пул соединений.Мы также сделали две вещи в нашем коде оболочки:

1) Проверьте, что ключ <= 250 символов и содержит допустимые символы 2) Убедитесь, что длина <1 МБ.Мы проверяем длину в строках и байтах []. </p>

Мы также запросили запрос на расширение.Это: http://www.couchbase.org/issues/browse/NCBC-10

0 голосов
/ 27 октября 2011

Возможно, ваш ключ содержит недопустимые символы. Обычно это может быть вызвано очень низкими символами ASCII - я считаю, что 0x30 и выше, безусловно, безопасны, а возможно, и 0x20 и выше. Отражая ASCII символьную таблицу , вы можете видеть, что от 0x00 до 0x1F - это в основном специальные символы. 0x20 - 0x2F - «нормальные» символы, но в некоторых справочных материалах, которые я видел, упоминается, что они также могут использоваться в качестве управляющих символов.

Эта проблема вызвала у меня некоторые проблемы; Я решил эту проблему, создав очень уникальный ключ, не обращая внимания на длину, а затем сгенерировав контрольную сумму ключа MD5. Сумма MD5 гарантирует минимальный риск столкновения клавиш, безопасные символы и меньшую длину, чем фактический ключ.

...