我已经开始编写一个应用程序,我想用它来快速搜索我的数据。
我开始使用来自 ServiceStack.Redis 的客户端。 (通过 NuGet 获取) 围绕这个我写了一个小测试应用程序来插入 20k 的公司数据记录,现在我正在使用以下代码查询这个东西:
using (var companies = redisClient.As<Company>())
{
var companiesFound = companies.GetAll().Where(x => x.CompanyName.Contains(searchString));
dgvOutput.DataSource = companiesFound.ToList<Company>();
}
我使用的 Company 类如下所示:
public class Company
{
public long Id { get; set; }
public string CompanyName { get; set; }
public string CompanyAddress { get; set; }
public string CompanyCity { get; set; }
}
这一切都很好,但我不能说它很快。任何人都可以帮助我如何使这个东西尽可能快地运行?索引?不同类型的查询?最好不要使用 LINQ?
最佳答案
我找到了这个文档:
https://github.com/ServiceStack/ServiceStack.Redis/wiki/IRedisClient
但它不是 Linq 提供程序。
我没有找到过滤公司的方法,您只能通过 Id 获取全部或一个。
所以我认为,一开始,您必须获得所有公司。并将其存储在应用程序缓存中,可能在您的应用程序启动时
companies = redisClient.As<Company>().GetAll();
然后您可以像以前一样使用 Linq2Objects 过滤列表:
var companiesFound = companies.Where(x => x.CompanyName.Contains(searchString));
dgvOutput.DataSource = companiesFound;
我不确定您是否需要 ToList 调用。
希望有人能给你一个更好的解决方案。
关于c# - 加速我的简单 Redis .NET 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602434/