Доступ к определению базового типа в кеше Ignite

Можно ли каким-то образом получить базовый ключ и определение типа значения для кэша, созданного каким-либо другим кодом? На данный момент я знаю только имя кэша. У меня нет никакой другой информации о том, как был создан кэш.

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

Мне нужно получить тип K и V в строке выше.

Я буду прикреплять CacheEntryListener к кешу, и мне нужно получить доступ к полям в части значения кеша. Как мне это сделать? Есть ли способ получить доступ к информации о типе из событий CacheEntryEvent, которые я получаю в методах слушателя?

1 ответ

Решение

Кэш 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"

Однако это не рекомендуется.

Рекомендуется использовать один тип для каждого кэша: логика вашего приложения должна обеспечивать, чтобы каждый именованный кэш работал только с определенными типами данных.

Другие вопросы по тегам