Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缓存大型数据集_C#_Asp.net_Caching - Fatal编程技术网

C# 缓存大型数据集

C# 缓存大型数据集,c#,asp.net,caching,C#,Asp.net,Caching,我正在开发一个具有以下要求的ASP.NET应用程序: 每15分钟执行一次相当昂贵的查询,查询大约20000项(不是从数据库中查询)。大约有10列,都是短字符串,除了一个存储多达3000个字符(通常要少得多)的字符串 通过各种排序和筛选处理生成的数据表,然后将前100项存储在其他数据表中 将此信息以聚合形式显示给潜在的10000人 在我看来,这是缓存(System.Web.caching)的一个很好的候选者,特别是考虑到我们可能希望支持额外的“动态”过滤。例如:将表向下筛选为仅与特定用户相关的行

我正在开发一个具有以下要求的ASP.NET应用程序:

  • 每15分钟执行一次相当昂贵的查询,查询大约20000项(不是从数据库中查询)。大约有10列,都是短字符串,除了一个存储多达3000个字符(通常要少得多)的字符串
  • 通过各种排序和筛选处理生成的数据表,然后将前100项存储在其他数据表中
  • 将此信息以聚合形式显示给潜在的10000人
  • 在我看来,这是缓存(System.Web.caching)的一个很好的候选者,特别是考虑到我们可能希望支持额外的“动态”过滤。例如:将表向下筛选为仅与特定用户相关的行

    但是,在开始之前,我想了解:

  • 在缓存中存储如此大的数据表是否有任何最佳实践
  • 如果有人有任何经验可以分享?你储存了大桌子吗
  • 路上有什么陷阱要小心吗

  • 提前感谢。

    您看过Microsoft企业库缓存应用程序块了吗

    它是围绕最佳实践构建的,非常易于使用


    这很简单,但您可能需要关注实际缓存的内容。Rick Strahl对缓存如何因内存压力而实际为空有自己的看法

    Steve Smith在微软的一次活动中用他的一个缓存解决方案赢得了比赛。这是他博客上的一篇文章。这是他回顾技术的一集。

    大概数据“表”中的某些行在查询运行之间会更新。 因此,您需要在每次运行之前刷新缓存 与仅读取文件相比,没有任何改进

    无论如何,文件系统运行着一个相当高效的缓存,那么为什么要重新发明轮子呢

    一个更好的方法可能是重新编写“查询”,以便在一个数据库中获得所需的一切
    文件的一次传递。

    据我了解,这个框架建议对Web应用程序使用System.Web.Caching,因此我不确定它是否会增加很多价值。如果您有在多个平台(ASP.NET/winforms/类库)之间共享的应用程序代码,这很好。它不是来自文件系统,我们很高兴这些信息已经过期15分钟了。这使得它适合缓存。