Я использую библиотеку ServiceStack.Redis для работы с Redis.Для начала я реализовал это решение.Методы get / set работают нормально для простого текста / строки.
Теперь, когда я сохраняю строку с кавычками (с escape-символом), она сохраняется правильно (я проверяю то же самое в redis-cli).Но метод Get возвращает строку, в которой удалены все двойные кавычки.
Например, при сохранении этой строки - «TestSample» сохраняется и получается как ожидалось.Кроме того, сохранение "TestSample \" с \ "\" кавычками \ "" нормально и показывает то же самое в redis-cli.Но вывод метода Get становится "TestSample with quotes"
public bool SetDataInCache<T>(string cacheKey, T cacheData)
{
try
{
using (_redisClient = new RedisClient(_cacheConfigs.RedisHost))
{
_redisClient.As<T>().SetValue(cacheKey, cacheData, new TimeSpan(0,0,300));
}
return true;
}
catch (Exception ex)
{
return false;
}
}
public T GetDataFromCacheByType<T>(string cacheKey)
{
T retVal = default(T);
try
{
using (_redisClient = new RedisClient(_cacheConfigs.RedisHost))
{
if (_redisClient.ContainsKey(cacheKey))
{
var wrapper = _redisClient.As<T>();
retVal = wrapper.GetValue(cacheKey);
}
return retVal;
}
}
catch (Exception ex)
{
return retVal;
}
}
Использование:
cacheObj.SetDataInCache("MyKey1","TestSample");
cacheObj.SetDataInCache("MyKey2","TestSample \"with\" \"quotes\"");
string result1 = Convert.ToString(cacheObj.GetDataFromCacheByType<string>("MyKey1"));
string result2 = Convert.ToString(cacheObj.GetDataFromCacheByType<string>("MyKey2"));
Actual: "TestSample withкавычки "
Ожидается:" TestSample \ "с \" \ "кавычками \" "