微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用键模式和堆栈交换Redis库获取值列表

如何解决如何使用键模式和堆栈交换Redis库获取值列表

在控制台应用程序上工作时,我有一个单例类,其中包含一些通用集合。 此集合以前保存在内存中,我们正尝试使用堆栈交换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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。