0
도움이 필요합니다. DotNet 코어를 사용하여 IDistributedCache를 사용하여 Redis에서 개체의 JSON Array를 저장하고 검색하려고합니다. 다음은 저장 및 레디 스 캐시에서 읽어 내 코드는dotnet core RedIs에 개체 저장
public void Save(string key, object content, int duration)
{
string s;
if (content is string)
{
s = (string)content;
}
else
{
s = JsonConvert.SerializeObject(content);
}
duration = duration <= 0 ? DefaultCacheDuration : duration;
Cache.Set(key, Encoding.UTF8.GetBytes(s), new DistributedCacheEntryOptions()
{
AbsoluteExpiration = DateTime.Now + TimeSpan.FromSeconds(duration)
});
}
public T Get<T>(string key) where T : class
{
var c = Cache.Get(key);
if (c == null)
{
return null;
}
var str = Encoding.UTF8.GetString(c);
if (typeof(T) == typeof(string))
{
return str as T;
}
return JsonConvert.DeserializeObject<T>(str);
}
내가 저장할 개체 내 비즈 논리에서
는이public IQueryable<RuleLoadCollection_Result> GetRuleLibrary()
{
var result = _dbClient.GetRuleLibrary();
_cache.Save("TestKey", result);
return result;
}
같은 객체를 저장하고있다
출력은 Object의 배열입니다.
[{"ruleId":1,"ruleName":"a1"}]
캐시에서 동일한 객체 배열을 반환하려면 어떤 코드를 작성해야합니까? 내가 몇 가지 옵션을 시도, 그들 중 대부분은 컴파일이나 런타임 오류를 주었다. 브라우징을 한 후에는 아래에서 시도했지만 작동했지만 배열의 첫 번째 요소 만 제공합니다. 이것에 대한
public RuleLoadCollection_Result GetRuleLibraryFromCache()
{
return (_cache.Get<List<RuleLoadCollection_Result>>("TestKey").First());
}
출력은,하지만 난 JSON 배열에 기록해야하는지 C# 다시 내가 저장 한 이유를 이해
{"ruleId":1,"ruleName":"a1"}
입니까? 코드 아래
런타임 오류가 도와주세요
"Cannot create and populate list type System.Linq.IQueryable`1[RuleLoadCollection_Result]. Path '', line 1, position 1."
입니다
public IQueryable<RuleLoadCollection_Result> GetRuleLibraryFromCache()
{
return (_cache.Get<IQueryable<RuleLoadCollection_Result>>("TestKey"));
}
런타임 오류를 제공합니다.
감사합니다.