沒有內置的方法來列出緩存中的所有項目。
你是對的,可以列出所有使用GetObjectsInRegion的項目作爲命名緩存。您必須首先知道所有區域名稱(如果使用)或調用GetSystemRegions以獲取所有(默認)系統區域。一個簡單的foreach將允許你列出所有項目。當您將某些內容放入沒有區域名稱的緩存中時,它將被添加到系統區域。
這是一個基本的例子
// Declare array for cache host(s).
DataCacheServerEndpoint[] servers = new DataCacheServerEndpoint[1];
servers[0] = new DataCacheServerEndpoint("YOURSERVERHERE", 22233);
// Setup the DataCacheFactory configuration.
DataCacheFactoryConfiguration factoryConfig = new DataCacheFactoryConfiguration();
factoryConfig.Servers = servers;
factoryConfig.SecurityProperties = new DataCacheSecurity(DataCacheSecurityMode.None, DataCacheProtectionLevel.None);
// Create a configured DataCacheFactory object.
DataCacheFactory mycacheFactory = new DataCacheFactory(factoryConfig);
// Get a cache client for the default cache
DataCache myCache = mycacheFactory.GetDefaultCache(); //or change to mycacheFactory.GetCache(myNamedCache);
//inserty dummytest data
myCache.Put("key1", "myobject1");
myCache.Put("key2", "myobject2");
myCache.Put("key3", "myobject3");
Random random = new Random();
//list all items in the cache : important part
foreach (string region in myCache.GetSystemRegions())
{
foreach (var kvp in myCache.GetObjectsInRegion(region))
{
Console.WriteLine("data item ('{0}','{1}') in region {2} of cache {3}", kvp.Key, kvp.Value.ToString(), region, "default");
}
}
謝謝您的回答,但還有一個問題,GetSystemRegions方法來確定的緩存,但對其他非默認的地區什麼默認的區域? – apudxtr
這就是交易:你無法獲得特定的地區名稱。這隻能通過主機上的Powershell CmdLets來實現(因爲區域限於單個緩存主機)。您也可以嘗試使用包裝自己維護所有區域名稱的列表。 – Cybermaxs
僅適用於Powershell Cmdlet Get-CacheRegion。注意:你可以使用C# – Cybermaxs