2013-07-16 82 views
0

我正在使用一个大型的Web应用程序,其中可以有多达100,000个对象,从一个数据库填充到缓存中。asp.net缓存建议

数据库中有一个表,给定对象ID,会给你一个last_updated值,只要该对象的任何方面在数据库中发生变化,该值都会更新。

我已经阅读为每个对象创建一个SqlCacheDependency(每个对象的表中有一行),这样的高数目的对象是不可行的。

我正在寻找替代解决方案。我想到的一种可能的解决方案是将“last_updated”表缓存为数据结构,并为其所基于的表创建缓存依赖关系。然后每当请求100,000个对象中的一个时,我检查缓存的“last_updated”表,如果它已过期,我再次从数据库中获取对象并重新缓存它。如果它没有过期,我会提供缓存版本。这似乎是一个合理的解决方案?

+0

与论坛网站不同,我们不使用“谢谢”或“任何帮助赞赏”,或在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –

回答

0

但是..你怎么可以做到这一点的单行表..在ASP.Net中,您可以创建SQl服务器依赖关系,它使用代理服务..并将数据放入缓存,每当表是更新..缓存将被拒绝,并从数据库中取出新的数据,并将其放入缓存。

我希望这可能会给你一些想法!

+0

我相信你也可以做行依赖,它只是取决于你的查询。如果你的查询使用where子句选择了单行,那么缓存依赖只会针对那一行而不是整个行表。 请参阅: http://stackoverflow.com/questions/940418/how-do-i-create-a-row-specific-sql-cache-dependency – user1411140