gpt4 book ai didi

redis - ServiceStack Redis 客户端 Get(key) 去除字符串数据中的引号

转载 作者:IT王子 更新时间:2023-10-29 06:07:14 24 4
gpt4 key购买 nike

我正在使用 ServiceStack.Redis 库来处理 Redis。首先,我实现了 this解决方案。 get/set 方法适用于纯文本/字符串。

现在,当我保存带引号的字符串(使用转义字符)时,它会正确保存(我在 redis-cli 中验证相同)。但是 Get 方法返回的字符串已删除所有双引号。

例如保存此字符串 - "TestSample" 被保存并按预期获取。还,保存 "TestSample\"with\"\"quotes\"" 很好并且在 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"));

实际:“带引号的测试样本”

预期:"TestSample\"with\"\"quotes\""

最佳答案

Typed Generic API 仅用于创建用于序列化复杂类型的通用 Redis 客户端。如果你正在实现一个通用缓存,你应该使用 IRedisClient API,例如:

_redisClient.Set(cacheKey, cacheData, new TimeSpan(0,0,300));

然后返回:

var retVal = _redisClient.Get<T>(cacheKey);

或者为了保存字符串或者如果您想自己序列化 POCO,您可以使用 IRedisClient SetValue/GetValue 字符串 API,例如:

_redisClient.SetValue(cacheKey, cacheData.ToJson());
var retVal = _redisClient.GetValue(cacheKey).FromJson<T>();

Note: calling IRedisClient.ContainsKey() performs an additional unnecessary Redis I/O operation, since you're returning default(T) anyway you should just call _redisClient.Get<T>() which returns the default value for non-existing keys.

关于redis - ServiceStack Redis 客户端 Get<T>(key) 去除字符串数据中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54764502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com