2

我有两个定义如下的榛树地图。

IMap<EmpKey, Employee> employeeMap = hazelcastInstance.getMap("employeeMap");
IMap<EmpKey, EmployeeFamily> familyMap = hazelcastInstance.getMap("familyMap");

我知道密钥被序列化(被转换为字节 [] 数组),然后被散列,其结果是没有分区的“mod”。这为我们提供了将存储数据的分区的 ID。此外,从每个成员的分区表中,它标识了分区的所有者。这意味着两者employeeObjfamily具有相同的对象empKey都将存储在同一个分区中。

我想知道这一步之后会发生什么。我了解密钥存储为 com.hazelcast.nio.serialization.Data 类(二进制形式)。是否会为每个哈希图维护单独的哈希桶,其键存在于给定分区中,以便更快地访问?

我知道分区数是可配置的,但我想在修改任何配置之前了解一些内部情况。

4

1 回答 1

1

这意味着具有相同 empKey 的employeeObj 和family 对象都将存储在同一个分区中。

正确的。

我想知道这一步之后会发生什么。我了解密钥存储为 com.hazelcast.nio.serialization.Data 类(二进制形式)。是否会为每个哈希图维护单独的哈希桶,其键存在于给定分区中,以便更快地访问?

每个 IMap 都有其完全私有的内部存储(它将获得自己的 ConcurrentHashMap 实例作为支持结构)。所以你会有单独的hashbucket。

于 2015-10-07T09:58:14.047 回答