如何使用密钥模式和堆栈交换redis库来获取值列表



在控制台应用程序上工作时,我有一个包含一些泛型集合的singleton类。这些集合以前保存在内存中,我们正试图使用堆栈交换redis库将它们移动到redis。

基本类为:

public class QueueParamDTO
{
public string Queue { get; set; }
public int Max { get; set; }
public int Calls { get; set; }
public int Holdtime { get; set; }
public int TalkTime { get; set; }
public int Completed { get; set; }
public int Abandoned { get; set; }
...
} 

该类的属性Queue的值是唯一的,所以我用它来构建键,对于该值,它是上面对象的序列化字符串。

RedisSingleton.Connection.GetDatabase().StringSet($"queue:{queueParam.Queue}",JsonConvert.SerializeObject(queueParam));

我能够读取单个值并反序列化对象。还可以使用以下模式检索完整的密钥列表:

var keys = server.Keys(pattern: "queue:*", pageSize: 100);

我如何对值做同样的事情,也就是说,使用上面的特定键模式获取值列表?

通过首先获取要从redis检索的密钥列表,并将其转换为RedisKey[]:数组

RedisKey[] queueKeys = RedisSingleton.Server.Keys(pattern: "queue:*").ToArray();

我可以检索RedisValue[]:的列表

RedisValue[] queueValues=RedisSingleton.Connection.GetDatabase().StringGet(queueKeys);

最后,我选择并反序列化为QueueParamDTO对象列表:

List<QueueParamDTO> queues = queueValues.Select(qv => JsonConvert.DeserializeObject<QueueParamDTO>(qv)).ToList();

最新更新