缓存数据库查找表的最佳方法?

时间:2014-03-19 10:08:41

标签: c# asp.net oracle caching

我希望找到缓存DB查找表的最佳方法,该表由大约75个表组成。

我想缓存这些表数据以便在我的应用程序中使用它们,所以每次我需要时都不会打开与数据库的连接。

这是我正在做的事情:

  1. 我创建了一个静态类,其中包含名为MyApplicationCache的每个查找表的静态属性。
  2. 在每个属性getter中,我都会使用DB中的预期数据填充它。
  3. 我使用HttpRuntime.Cache["PropertyName"]
  4. 缓存数据
  5. 每当我获取此查找表数据时,我都会检查HttpRuntime.Cache["PropertyName"] != null
  6. 如果是,那么我从缓存中获取它,否则我从DB
  7. 获取它
  8. 最后,我在global.asax
  9. 中的应用程序启动事件中调用所有属性

    到目前为止一切都很好,但最近我遇到了性能问题,我无法解决。如果我想从DB更新缓存对象(付款人),我这样做:

    MyApplicationCache.Payer = null;
    

    这会设置HttpRuntime.Cache["Payer"] = null,所以如果我再次请求它,则会从数据库重新加载它。

    list<payer> payerList = MyApplicationCache.Payer;
    

    现在,性能问题引发了:

      数据库中的
    1. PayerList约为1700条记录。
    2. 每个付款人对象都有一个名为List的{​​{1}}属性,该属性需要在所有PayerBranches列表上循环,并为每个PayerList项目获取PayerBranches
    3. // MyApplicationCache Payer Property:

      PayerList

      每个包含列表的属性都会出现此问题

      我不知道是否有更好的方法来缓存数据或我的代码是否存在问题。

      是否有更好的缓存方法?

0 个答案:

没有答案