如何在 StackExchange.Redis 中的一个请求中从多个哈希中获取?

How can I HGET from many hashes in one request in StackExchange.Redis?

我有大约 1000 个哈希值,其中一些具有相同的密钥,即

Hash1 = {1: 1, 2: 1, 3: 5, 4: 7...}
Hash2 = {1: 4, 3: 5, 9: 7...}
Hash3 = {5: 4, 8: 5, 9: 7...}
...

我想获取所有散列中的所有键 1 值。我可以这样做:

List<value> values = new();
foreach (string hashKey in hashKeys)
{
  values.Add(await _client.HashGetAsync(hashKey, "1"));
}

return values;

但这与 Redis 的网络连接 hashKeys.Count() 次。我可以只在一个网络请求中执行此操作吗?

不是 直接通过内置 API - 没有一个 redis API 可以实现这一点。但是,您 可以 使用 Lua (ScriptEvaluate),传入多个键,在 Lua 代码中循环,并通过调用构建结果数组hget 重复。