如何使用带有堆栈交换 redis 库的键模式获取值列表
How to get list of values using key pattern with stack exchange redis library
在控制台应用程序上工作,我有一个单例 class,其中包含一些通用集合。
这些集合以前保存在内存中,我们正在尝试使用堆栈交换 redis 库将它们移动到 redis。
基础 class 是:
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
的 class 的值是唯一的,所以我用它来构建密钥,至于值是上述对象的序列化字符串.
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);
最后我 select 反序列化为 QueueParamDTO
个对象的列表:
List<QueueParamDTO> queues = queueValues.Select(qv => JsonConvert.DeserializeObject<QueueParamDTO>(qv)).ToList();
在控制台应用程序上工作,我有一个单例 class,其中包含一些通用集合。 这些集合以前保存在内存中,我们正在尝试使用堆栈交换 redis 库将它们移动到 redis。
基础 class 是:
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
的 class 的值是唯一的,所以我用它来构建密钥,至于值是上述对象的序列化字符串.
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);
最后我 select 反序列化为 QueueParamDTO
个对象的列表:
List<QueueParamDTO> queues = queueValues.Select(qv => JsonConvert.DeserializeObject<QueueParamDTO>(qv)).ToList();