c# - 加速我的简单 Redis .NET 应用程序

标签 c# .net linq redis

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

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

相关文章:

c# - 绘制和更新 PictureBox

c# - .Net 属性网格。有没有办法让网格以不同的方式操作对象

c# - 索引 getter 中的 IndexOutOfRangeException

c# - 处理可能包含空值的属性链

c# - 画了一个矩形但是笔的颜色不起作用

c# - 使用 Visual Studio 调试 Azure Functions : Break Points don't work

C# 与 VB.Net - 隐式转换

c# - 如何使用 Linq 在列表中打印列表

LINQ:选择 <条件> 或 <条件>

c# - 'IQueryable' 不包含 'OrderByDescending' 的定义