2

我对 AppFabric 很陌生,我想了解的是如何规定我希望数据进入分布式缓存以及本地缓存

我在这里阅读了基于配置执行此操作的帖子。我没有使用任何 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 对象?

还是我需要两个单独的工厂配置对象 - 每个缓存一个?

4

1 回答 1

4

您可以在这里看到,是的,如果启用了本地缓存,对象将存储在本地缓存中:

启用本地缓存后,缓存客户端会在本地存储对对象的引用。

“启用本地缓存”的说明与您所做的完全一样 - 基本上只是使用DataCacheLocalCacheProperties(尽管也可以使用app.config 设置启用本地缓存)。

所以就像你说的那样——只使用分布式缓存,没有本地缓存​​,然后使用从不使用的对象获取DataCache的对象。DataCacheFactoryDataCacheLocalCacheProperties


另请注意,本地缓存中的项目可以根据配置的策略被逐出

本地缓存中对象的生命周期取决于多个因素,例如本地缓存中的最大对象数和失效策略。

于 2012-11-13T18:28:07.670 回答