3

我已经开始编写一个应用程序,我想用它来快速搜索我的数据。

我开始使用来自 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?

4

1 回答 1

4

我找到了这个文档: 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 调用。

希望有人给你一个更好的解决方案。

于 2013-09-05T10:36:20.247 回答