1

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

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

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

我可以使用通知使 LocalCache 对象无效,但这是在轮询的基础上完成的,这为在轮询期间发生更新提供了机会,从而使我得到过时的数据。

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

4

1 回答 1

3

“计算机科学中只有两件困难的事情:缓存失效和命名事情”——Phil Karlton

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

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

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

于 2013-04-09T10:36:00.710 回答