Как определить, почему memcache Enyim возвращает false при хранении элемента?

Как я могу определить WHY Enyim вернул false из следующего вызова:

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

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

Итак, как я могу определить, что вызывает ложь?

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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