gpt4 book ai didi

wpf - ServiceStack Redis 搜索很慢。如何优化?

转载 作者:可可西里 更新时间:2023-11-01 11:12:03 24 4
gpt4 key购买 nike

我正在使用 ServiceStack.Redis 来实现一个演示项目。它包含两个 POCO,即专辑和歌曲。

下面是使用秒表实例测量的搜索结果:

Time elapsed searching 5804 items is 00:00:00.1243984 <-- Albums
Time elapsed searching 138731 items is 00:00:02.0592068 <-- Songs

如您所见,搜索歌曲花费了太多时间。我在 WPF 应用程序中显示结果,其中还输入了搜索词。滞后是 redis 的禁区。

下面是用于搜索的代码:

IEnumerable<int> songsFromRedis =
songRedis.GetAll()
.Where(song => song.Title != null
&& song.Title.ToLowerInvariant().Contains(searchText))
.OrderBy(song => song.Title)
.Select(x => x.AlbumId);

如果我们不能让它更快,ElasticSearch 会有帮助吗?

最佳答案

问题在于您如何使用 Redis,即 songRedis.GetAll() 下载整个数据集,将所有实体反序列化为 C# 对象并在客户端执行搜索。

您永远不应该在客户端(即任何数据存储)上通过网络下载和查询整个数据集,即使是完整的服务器端表扫描查询也会执行得更好,因为只有过滤后的结果会返回给客户端,并且不是整个数据集。理想情况下,甚至应该避免完整的服务器端表扫描,并且应该通过索引进行任何查询。

Redis 不支持内置索引,但需要时您可以使用 SET to manually create indexes between entities in Redis .

关于wpf - ServiceStack Redis 搜索很慢。如何优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023692/

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