2017-09-25 56 views
1

有沒有什麼辦法可以獲得由其他代碼創建的緩存的基礎鍵和值類型定義?在這個時候,我只知道緩存名稱。我沒有任何關於如何創建緩存的其他信息。在Ignite緩存中訪問基礎類型定義

IgniteCache<K, V> dataCache = ignite.cache("dataCache"); 

我需要在上面的行中獲取K和V的類型。

我將附加CacheEntryListener到緩存,我需要訪問緩存的值部分中的字段。我該怎麼做呢?有什麼方法可以從我在偵聽器方法中獲取的CacheEntryEvent事件中訪問類型信息?

回答

2

Ignite緩存沒有任何基礎類型定義,它可以保存任何類型的數據。仿製藥只是爲了您的方便。

例如,你可以這樣做:

IgniteCache<String, String> sCache = ignite.createCache("foo"); 
sCache.put("1", "2"); 

IgniteCache<Integer, Integer> iCache = ignite.cache("foo"); // same cache 
iCache.put(1, 2); 

IgniteCache<Object, Object> oCache = ignite.cache("foo"); // same cache 
oCache.get(1); // 2 
oCache.get("1"); // "2" 

但是,不建議這樣做。

每個緩存一種類型是推薦的方法:您的應用程序邏輯應確保每個指定的緩存僅適用於特定的數據類型。

+0

我同意。但是,假設我的點火代碼不知道緩存中值的類型是什麼。緩存可能已經由我的應用程序管道中的其他組件創建。它可以是員工類型或學生類型。我可以獲得類型定義(可以是Employee.class或Student.class)嗎? –

+0

@JamesIsaac一般答案是否:Ignite不會保存該內容。 createCache (「c」)與createCache (「c」)相同。 –