缓存数据访问层结果

时间:2009-08-28 13:35:30

标签: c# .net asp.net caching data-access-layer

我想在数据访问层进行一些缓存,以帮助提高性能。我已经决定使用HTTPContext缓存,顶部有一个抽象层,以便我可以在以后根据需要切换进出其他缓存策略。

基本上缓存应该是变体的,这意味着对于每个单独的方法,它将根据传入的值缓存不同的结果。

我的问题是,如果我想要一个“每个函数的缓存”,并且系统根据传递给方法的值确定是否要访问数据库或缓存,我该怎么办?关于这样做(即获取项目值或其他东西的哈希 - 但必须有更好的方法)。

我知道我可以做一些关于交叉问题以及EL和缓存应用程序块的东西,但是它的开销比我想要的要多一些。我想做一些相当轻量级的东西,我可以控制(例如,我可以传入一个参数,我可以检查哪个会绕过缓存 - 例如)

干杯安东尼

1 个答案:

答案 0 :(得分:2)

我们使用企业库缓存应用程序块。 Entlib Cache的工作方式类似于带有键和值的字典。

Entlib缓存允许您创建多个命名缓存,在您的情况下,它将是每个函数一个。

在每个缓存中,您可以使用参数作为键。然后您可以按如下方式执行此操作:

  • 尝试根据密钥从缓存中获取值。
  • 如果value为null,则缓存中缺少该值。
  • 因此,从数据库中获取值并将结果放在缓存中,以便下次可用。