Как использовать Memcached клиент Enyim с методом Append?
Значение, которое я пытаюсь добавить, является строкой. Я был в состоянии преобразовать строку в массив байтов, используя Encoding.ASCII.GetBytes(value)
и передать это IMemcachedClient
:
Присоединение к Memcached (кажется, хорошо)
var value = "Some string value that should get appended";
var bytes = Encoding.ASCII.GetBytes(value);
_memcachedClient.Append(key, new ArraySegment<byte>(bytes, 0, bytes.Length));
Получение добавленного значения из Memcached
var valueAsBase64 = _memcachedClient.Get(key) as string;
var bytes = System.Convert.FromBase64String(valueAsBase64);
var result = Encoding.ASCII.GetString(bytes);
Я вижу возвращаемое значение, и это строка. Я просто не уверен, как вернуть значение обратно в строку, с которой я начал (теперь добавлен).
1 ответ
Проблема, с которой я столкнулся, заключалась в том, что я просто инициализировал запись пустой строкой вместо пустого байтового массива. Таким образом, возвращаемый тип был искажённой ошибкой.
Проблема сводилась к тому, что метод.Append() не устанавливал начальное значение, если ключ не существует. Я посмотрю немного подробнее, чтобы увидеть, есть ли способ сделать начальный Put, если ключ не существует.
Это работает, хотя:
var bytes = (byte[])_cache.Get(key);
var value = Encoding.ASCII.GetString(bytes);