何时使用Azure缓存本地缓存

时间:2013-04-09 08:37:43

标签: caching azure distributed-caching

我想开始使用Azure分布式缓存,并遇到了LocalCache的概念。但它可能与分布式缓存不同步的事实让我想知道,为什么我会想要使用它以及如何安全地使用它。

启用后,从缓存集群中检索的项目将本地存储在客户端计算机的内存中。这样可以提高后续get请求的性能,但可能会导致本地缓存版本与缓存集群中实际项目之间的数据不一致。

调用DataCache.GetIfNewer是一个选项,以确保我获得最新版本,但这需要我仍然调用分布式缓存,传入我想要检查的对象,以查看是否两个版本不同。

我可以使用通知来使LocalCache对象无效,但这是在轮询的基础上完成的,这为在轮询期间进行更新提供了机会,让我有过时的数据。

那么,为什么我会使用LocalCache,如果有理由这样做,我该如何安全地使用它呢?

1 个答案:

答案 0 :(得分:3)

  

“计算机科学中只有两件事:缓存失效和命名事物” - Phil Karlton

当a)性能至关重要时,您将使用LocalCache b)您并不关心检索到的对象可能是陈旧的。

在很多情况下,对象永远不会过时(例如公共/银行假日列表),或者当您不太担心100%是最新的时(例如,如果项目有&gt ; 1000库存,使用本地缓存,否则从数据库重新获取。

不要尝试使本地缓存无效。如果您需要更多最新对象,请从群集中获取它们。如果您无法容忍不同步的数据,请从数据库中获取。缓存始终是性能不一致的妥协 - LocalCache不仅仅是服务器缓存,但服务器缓存仍然是一种妥协。