【发布时间】:2011-04-22 00:26:08
【问题描述】:
在分布式缓存场景中,一般建议使用还是避免使用存储在缓存中的单体对象?
我正在使用由 EAV 架构支持的服务,因此我们正在实施缓存以最大程度地减少 EAV 在从数据库中检索所有主要记录和相应的属性集合时造成的感知性能缺陷。我们将在服务启动时初始化缓存。
我们对所有产品的调用并不特别频繁——客户在首次使用对象映射填充本地缓存后调用差异。为了执行该差异,分布式缓存将需要反映对数据库中在任意基础上执行的单个记录的更改,并在客户端调用差异时针对更改进行处理。
首先想到的是使用列表或字典将记录存储在分布式缓存中——获取整个集合,在本地内存中对其进行操作或搜索,然后将整个集合放回缓存中。然而,后来的想法导致了用单独的记录填充缓存的想法,每个记录都以一种方式进行键控,以使它们可以单独从缓存中检索/更新到缓存中。这导致想知道在更新所有数据时哪种方法的性能更高。
我们使用的是 Windows Server AppFabric,因此我们可以使用 BulkGet 操作。不过,我不相信有任何批量更新的概念。
关于分布式缓存对象大小是否存在普遍的想法?如果我们对所有项目都有更多请求,我会担心网络带宽,但至少目前,对所有项目的需求应该是相当小的。
是的,我们将测试和分析每种方法,但我想知道这里是否有任何超出当前考虑范围的内容。
【问题讨论】:
-
在最近的 .Net Rocks 播客上有一些关于这个话题的讨论,嘉宾是 Udi Dahan。播客是关于 CQRS 的,他们讨论了该模式的主要优势之一是如何实现更好的缓存。可能会给你一些想法...
标签: c# .net caching appfabric distributed-caching