如何在堆栈交换redis库中使用键模式获取值列表

8yoxcaq7  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(252)

在控制台应用程序上,我有一个包含一些泛型集合的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);

如何对值执行相同的操作,即使用如上所述的特定键模式获取值列表?

frebpwbc

frebpwbc1#

首先获取我想从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();

相关问题