Вы можете сделать это, используя внутренние API, но это может измениться в будущем. Я могу привести вам пример, но я не уверен, что это то, что вы хотите использовать.
редактировать: Как уже упоминалось выше этого использует много внутренних API, поэтому, пожалуйста, знать о том, что может измениться в любой момент (даже без упоминания):
public class Test {
public static void main(String[] args) throws Exception {
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
IMap<String, String> map = hazelcastInstance.getMap("myMapName");
String key = "mySearchedKey";
map.put(key, "foo");
SerializationService serializationService = getSerializationService(map);
Data keyData = serializationService.toData(key);
RecordStore recordStore = getRecordStore(map, key);
Record record = recordStore.getRecord(keyData);
// This will do no serialization in most cases since Data is a DataRecord
// only for InMemoryFormat::OBJECT this will serialize the object to a Data
// instance
Data serializedValue = serializationService.toData(record.getValue());
}
/**
* This method handles internal APIs!!!
*/
private static SerializationService getSerializationService(IMap<String, String> map) {
MapProxyImpl<String, String> proxy = (MapProxyImpl<String, String>) map;
return proxy.getNodeEngine().getSerializationService();
}
/**
* This method handles internal APIs!!!
*/
private static RecordStore getRecordStore(IMap<String, String> map, String key) throws Exception {
MapProxyImpl<String, String> proxy = (MapProxyImpl<String, String>) map;
HazelcastInstance hazelcastInstance = proxy.getNodeEngine().getHazelcastInstance();
MapService mapService = proxy.getService();
MapServiceContext mapServiceContext = mapService.getMapServiceContext();
PartitionService partitionService = hazelcastInstance.getPartitionService();
Partition partition = partitionService.getPartition(key);
PartitionContainer partitionContainer = mapServiceContext.getPartitionContainer(partition.getPartitionId());
return partitionContainer.getRecordStore("myMapName");
}
}
Я бы очень хотел увидеть его. Ну, как намекнул ты, если это кажется пугающим, я просто вернусь к своей «избыточности» :). И спасибо за ваш ответ –