【问题标题】:ASP.NET Data Caching and how to invalidateASP.NET 数据缓存以及如何使缓存失效
【发布时间】:2011-03-17 23:11:22
【问题描述】:

我的 Web 应用程序正在使用 asp.net 缓存对象来存储数据库中的数据。我正在寻找一种优雅的使缓存对象无效的方法,但还没有想出任何优雅的方法。

通过跟踪它们的缓存键,很容易使单个记录或单个表中所有记录的列表无效。但是,我可能有任意数量的表数据子集列表。当该记录更改时,我只想使包含特定记录的列表的缓存记录无效。如果只有一个列表包含该记录,我不想使该表的所有数据列表无效。

我已经尝试过 SqlDependency 并且对它不满意,因为我遇到了很多问题。你知道如何解决这个问题吗?提前致谢!

【问题讨论】:

  • 只是想知道,您的失效标准是什么?按时间还是您检查数据库是否有上次更新等?
  • 如果你偶然使用 EF,你可以使用它 - archive.msdn.microsoft.com/EFProviderWrappers - 它是你数据上下文的包装器,并自动为你处理缓存
  • @rushonerok,我现在用的是Linq to SQL,不是实体框架,不过看起来很酷,谢谢分享!
  • @winfred,我可以随时对记录进行更新,因为所有更改都将在同一个应用程序中进行

标签: c# asp.net caching


【解决方案1】:

创建一个静态Dictionary<string, List<string>>

key 将使用一个命名方案,例如 table_primarykey,它代表一条记录

该值是缓存记录的缓存键名称列表

这将让您有效地找到哪些记录缓存在哪里,允许您在从缓存中添加和删除项目(使用回调)时管理字典。

【讨论】:

  • 感谢您的建议和好主意!它并不像我希望的那样优雅,因为我仍然需要为我正在缓存的每条记录提取主键列表,但就我的目的而言,它应该可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2015-09-01
  • 2017-09-08
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2015-04-29
相关资源
最近更新 更多