C#ASP.NET - 需要搜索/排序的对象缓存列表?

时间:2009-10-01 06:47:41

标签: c# asp.net caching

我有一个Order个对象列表。

这些对象在我的应用程序的多个用户之间共享,并且经常访问时很少更改,这使它们成为缓存的理想候选对象。

我面临的问题是我对我的MSSQL数据库进行了LINQ查询,它进行了排序和搜索 - 但如果我将它们保存在缓存中,我该怎么做呢?我不想重复代码(DRY!)。

1 个答案:

答案 0 :(得分:1)

在我看来,你必须做这样的事情

  • 有一个通用的方法来加载内存中的对象并将它们作为列表/字典缓存..在单例BL类中适合你的任何东西
  • 您的Linq查询进行排序/搜索,然后在BL类中的缓存对象集合上完成,而不是直接转到MySQL数据库。

因此,在第一次调用完成的情况下,查询缓存集合,但由于它仍为空,您可以获取所有对象(当然这取决于数据量),然后一旦数据是在内存中,您的LINQ查询将在其上执行 后续调用不会访问数据库,只会访问缓存的集合。

您必须注意访问您的集合线程安全。此外,您可以包括一些刷新间隔,基本上是基于您在一些固定间隔内刷新缓存的时间戳。