我正在使用StackExchange.Redis
(版本1.2.1)和ASP.NET MVC C#应用程序。我可以使用StackExchange.Redis
存储和查看数组和字符串。但是,我无法找到存储列表的方法。有什么办法吗?如果没有,请你为StackExchange.Redis
提出一些好的替代方案来完成这个要求吗?
答案 0 :(得分:4)
我建议您使用StackExchange.Redis.Extensions,然后就可以执行此操作:
var list = new List<int> { 1, 2, 3 };
bool added = cacheClient.Add("MyList", list, DateTimeOffset.Now.AddMinutes(10));
并检索您的清单:
var list = cacheClient.Get<List<int>>("MyList");
答案 1 :(得分:1)
严格来说,Redis只存储字符串,而List<MyObject>
显然不是字符串。但是有一种方法可以实现您的目标:将您的列表转换为字符串。
要存储List<MyObject>
,请先使用JsonConvert之类的工具将其序列化为字符串,然后将其存储在redis上。检索时,只需反序列化...
答案 2 :(得分:0)
前3年以上,我一直希望使用StackExchange.Redis在.NET核心中执行类似的操作,因此,如果有人希望执行相同的操作,则将其保留在此处。
有“ StackExchange.Redis.Extensions.Core”,它允许按以下方式存储和检索。将此Nuget与“ StackExchange.Redis.Extensions.AspNetCore”和“ StackExchange.Redis.Extensions.Newtonsoft”一起使用
private readonly IRedisCacheClient _redisCacheClient;
public ValuesController(IRedisCacheClient redisCacheClient)
{
_redisCacheClient = redisCacheClient;
}
public async Task<List<int>> Get()
{
var list = new List<int> { 1, 2, 3 };
var added = await _redisCacheClient.Db0.AddAsync("MyList", list, DateTimeOffset.Now.AddMinutes(10));
return await _redisCacheClient.Db0.GetAsync<List<int>>("MyList");
}