我有一个服务,我想实现某种缓存,但不确定我是否应该使用.NET 4的ObjectCache,或者只是在服务上有私有字段,经过一段时间后,会刷新。
情况如下:该服务用于返回大块数据。目前,我们在服务器的每个请求中访问数据库以获取数据。此数据仅在午夜每天刷新一次。我希望将这些数据缓存在服务上,并在数据库更新后每天晚上刷新它(比如上午12:30左右)。
现在,在过去,我们将填充本地字段并创建一个“监视器线程”,它将持续运行,并在一段指定的时间后重新填充这些字段。我看到的一个缺点是服务类在其中有一些额外的代码用于存储。
如果我切换到ObjectCache,一个好处是过期后自动删除。我想要做的是将一个回调方法分配给CacheEntryRemovedCallback委托,当调用它时,只需在将来的某个时刻重新缓存数据(刷新数据库后约30分钟)。
我的问题是,对于WCF服务,缓存数据的更理想选择是什么?
答案 0 :(得分:1)
使用System.Runtime.Caching
。它比本土自行车好。
如果您的数据仅在午夜更新,则可以使用SqlChangeMonitor
。这将显着简化逻辑,您的缓存将与数据同步。
http://www.codeproject.com/Articles/167282/NET-4-0-MemoryCache-with-SqlChangeMonitor