我是AppFabric的新手,我想了解的是如何规定我希望数据进入分布式缓存以及本地缓存
我阅读了基于配置的帖子here。我没有使用任何xml配置,而是以编程方式使用配置创建我的对象。我正在玩下面的代码: -
// Declare array for cache host(s).
List<DataCacheServerEndpoint> servers = new List<DataCacheServerEndpoint>();
servers.Add(new DataCacheServerEndpoint("SERVER1", 10023));
servers.Add(new DataCacheServerEndpoint("SERVER2", 10023));
servers.Add(new DataCacheServerEndpoint("SERVER3", 10023));
DataCacheLocalCacheProperties localCacheConfig;
TimeSpan localTimeout = new TimeSpan(0, 5, 0);
localCacheConfig = new DataCacheLocalCacheProperties(10000, localTimeout, DataCacheLocalCacheInvalidationPolicy.TimeoutBased);
// Setup the DataCacheFactory configuration.
DataCacheFactoryConfiguration factoryConfig = new DataCacheFactoryConfiguration();
factoryConfig.Servers = servers;
factoryConfig.SecurityProperties = new DataCacheSecurity(DataCacheSecurityMode.None, DataCacheProtectionLevel.None);
factoryConfig.LocalCacheProperties = localCacheConfig;
DataCacheFactory factory = DataCacheFactoryExtensions.Create(factoryConfig);
DataCache dataCache = factory.GetCache("MyCache");
dataCache.Put("myKey", "MyValue");
我是否正确地假设因为我已将本地缓存配置添加到factoryConfig对象中,我的缓存项将自动添加到本地缓存以及分布式缓存中?
因此,如果我希望只缓存到分布式缓存的项目,我只需要将本地缓存配置添加到factoryConfig对象中吗?
或者我是否需要两个单独的工厂配置对象 - 每个缓存一个?
答案 0 :(得分:4)
如果启用了本地缓存,您可以看到here,是的,该对象将存储在本地缓存中:
启用本地缓存后,缓存客户端会在本地存储对该对象的引用。
instructions for "enabling the local cache"与您完全一样 - 基本上只使用DataCacheLocalCacheProperties
(尽管也可以使用app.config settings启用本地缓存)。
所以就像你说的那样 - 仅使用分布式缓存而不使用本地,然后使用取自<{1}}的{{1}}对象 not 使用DataCache
。
另请注意,本地缓存中的项目可以是evicted depending on the policies configured:
本地缓存中对象的生命周期取决于多种因素,例如本地缓存中的最大对象数和失效策略。