gpt4 book ai didi

c# - 为什么从 Redis 中提取键和哈希值这么慢?

转载 作者:可可西里 更新时间:2023-11-01 11:23:44 25 4
gpt4 key购买 nike

我正在使用 StackExchange.Redis 库与 Azure Redis 服务器交互,以提取一些哈希值以通过 Web API 进行访问。这是我的做法:

        IDatabase cache = lazyConnection.Value.GetDatabase();
var server = lazyConnection.Value.GetServer(lazyConnection.Value.GetEndPoints().First());
var starterKeys = server.Keys(pattern: "Monitor:*");
var count = 0;
foreach (var starterKey in starterKeys)
{
var hashEntries = cache.HashGetAll(starterKey);
foreach (var hashEntry in hashEntries)
{
//put values into my model here...
}
count++;
}

恰好有 22 个键与模式 "Monitor:*" 匹配(通过调试和观察末尾的 count 值找到)。然而,这段代码检索那 22 个键和哈希需要 55 秒。哈希值也不是很大。每个散列中大约有 19 个键值对(例如姓名、公司、电子邮件、电话等。不要太大)。

为什么要花这么长时间?我认为使用 Redis 的原因之一是速度快,并通过存储聚合数据来减少数据库的负载。我可以在我的数据库中设置它并查询它(即使使用连接来获取聚合数据),我的过程将比 55 秒快得多。

我是不是做错了什么?还是我不了解 Redis 的用途或正确用法?

而且,最重要的是,我能做些什么来更快地检索这些键和哈希值吗?

最佳答案

如果您需要所有 KEY*,将它们保留在一个值中会提高速度。您可以将对象保留在 AllKeys 下以显示所有键。

设置所有对象

 cache.StringSetAsync("AllKeys", JsonConvert.SerializeObject(obj));

获取所有对象

JsonConvert.DeserializeObject<List<TEntity>>(await cache.StringGetAsync("AllKeys")).ToList();

关于c# - 为什么从 Redis 中提取键和哈希值这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com