1) 我想知道我是否在AppFabric缓存中使用区域是否可能区域存在于本地缓存中?或区域只存在于群集中?
2) 作为一个单独的问题,如何判断我的数据是来自群集还是来自我的本地缓存?是否有某种AppFabric工具可用于分析数据的来源?
我在代码中使用配置来设置我的本地缓存属性,以便将我的项目放入本地缓存中,如此
localCacheConfig = new DataCacheLocalCacheProperties(10000, localTimeout, DataCacheLocalCacheInvalidationPolicy.TimeoutBased);
// Setup the DataCacheFactory configuration.
DataCacheFactoryConfiguration factoryConfig = new DataCacheFactoryConfiguration();
factoryConfig.Servers = servers;
factoryConfig.LocalCacheProperties = localCacheConfig;
//code to put items in cache....etc
我是否需要对“获取”执行任何特殊操作,或者它是否足够智能,以便从本地缓存中获取它(如果存在)?
答案 0 :(得分:2)
Region是AppFabric中的逻辑概念。它允许您按标签查询项目,但项目将仅存储在一个主机中(有限的分发和高可用性)。
本地缓存未绑定到区域。它只是您最近调用缓存集群的本地副本。 客户端启用了本地缓存,这意味着如果需要,可以避免使用它。
本地缓存中对象的生命周期取决于多种因素,例如本地缓存中的最大对象数和失效策略(超时或通知)。
您无法知道数据是来自本地缓存还是分布式缓存。这就是建议将本地缓存用于参考数据的原因。
答案 1 :(得分:1)
1.本地缓存中不存在区域,区域仅特定于缓存集群。
2.您可以通过在Appfabric powershell控制台中执行以下命令来获取特定命名缓存的统计信息,
get-cachestatistics <CacheName>
它为您提供了一个 ReadRequestCount 的结果集,如果请求转到本地缓存,则该计数不会因特定请求而增加。
通过这种方式,您可以检查本地缓存是否正常工作。
答案 2 :(得分:0)
区域不能存在于本地缓存中,它们只存在于群集的缓存中。
由于本地缓存是可选的,因此客户端代码应该完全不知道缓存项是来自群集还是来自本地缓存。为了实现这一点,当请求的项目在本地缓存中时,它将从那里返回(避免跨群集的跨服务器调用)。