我打算开发一个Web服务,我需要在内存缓存中使用,.NET提供了哪些不同的缓存框架,我使用了Microsoft Enterprise Library Cache块,还评估了NCache用于分布式环境。
我的核心要求是使用缓存数据的可靠性,我正在考虑使用Enterprise Lib Cache块数据库数据存储来保持工作进程重新启动时的持久性。
任何选项??
答案 0 :(得分:4)
您的缓存是易失性数据存储,您应该编写软件以使其显示缓存不可用。 e.g。
public DtoThing GetSomeData(string parameters)
{
if (<check cache for data> == <not there>)
return <get data from persistent store>
else
return <get data from cache>
}
如果您使用数据库作为缓存的后备存储,您基本上只是放弃了使用缓存的所有好处。当你说缓存需要可靠时,你是说要更新需要保持一致,还是数据需要始终在缓存中?如果是前者,只要您以只有一条路径来更新数据的方式编写软件,就可以很容易地确保发生这种情况,然后该路径可以在成功执行对持久性的写入时使缓存无效数据存储。
答案 1 :(得分:3)
我有使用Microsoft的企业库缓存块的经验,它对我来说很好。 EntLib配置有时可能有点冗长,但它可以完成工作。您是否有其他特殊原因寻找其他东西?
答案 2 :(得分:1)
答案 3 :(得分:0)
这类问题有很多潜在的解决方案。你提到过看NCache;如果你有时间,请查看Oracle Coherence,这是NCache试图复制的产品; - )
我的建议是,除非您需要分布式缓存的好处,否则使用单进程内存缓存会更简单。
为了防止你好奇,早期讨论NCache的起源:http://www.theserverside.com/news/thread.tss?thread_id=43950