问题标签 [hazelcast-imap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hazelcast IMap:keySet() 与 localKeySet()
我在具有 5 个以上节点的集群中使用 Hazelcast 3.4。我有一张地图,其中键是复杂对象(不是原始类型)。在任何时候,地图的大小都可能在 200K 左右。
我了解地图中的条目/值将存储在不同的分区中。但是,我想知道以下内容。
- Hazelcast 集群中的每个成员是否维护有关给定映射中所有键的集合的信息,或者仅维护有关其拥有的分区中这些键的子集的信息?
2 & 3 是后续问题。
keySet() 是分布式操作吗?(即它肯定会涉及集群环境中的远程机器通信)
localKeySet() 是分布式操作吗?
关于这个问题的更多背景:
我需要通过调用第三方程序公开的服务 cachedKeys(K[] keys) 定期通知第三方程序有关我程序中 hazelcast 映射中存在的键的信息。
选项 1:从集群中的任何一个节点调用 keySet()以检索映射中的所有键,然后从该节点调用 cachedKeys(K[] keys) 服务。
选项 2:从集群中的每个节点调用 localKeySet()以识别每个节点拥有的本地密钥,然后从每个节点调用 cachedKeys(K[] keys)。
以上答案将帮助我选择正确的选项。
spring - Hazelcast 缓存没有被驱逐基于
我们将其配置<time-to-live-seconds>
为 1200(20 分钟),但缓存会在缓存创建时间一分钟后自动清除。
有人可以告诉如何使缓存在指定的时间段内有效吗?
java - 如何使用 Hazelcast 在集群中的两个实例中运行一项大任务
我想在使用 Hazelcast 的集群中彼此共享的两个实例中运行 java 任务。这样,任务可以更快地完成,而不是在单个实例中运行。请帮忙!
hazelcast - Hazelcast - 查询地图值的集合
假设我在 IMap 中有以下值:
我想找到属于“销售”类别的所有员工。另外,我想在 getCategories() 上创建一个索引,以便查询快速返回。似乎没有可用的谓词来执行此操作。我该如何实现这一目标?看来我将不得不写一个谓词来做到这一点。是否有可以查看的示例代码向我展示如何构建使用索引的谓词?
java - EntryProcessor 和 keySet(Predicate) 的性能
我有一个定义如下的榛树地图,其中存储大约。100 万个条目。
employeeObj.isCool()
返回给定员工是否“酷”。
我需要一种机制来从employeeMap
. 我了解我可以执行以下操作之一。
选项 1:调用employeeMap.keySet(predicate);
将在集群中的每个成员中并行执行,并由调用者使用 fork/join 机制加入。
问题1:但是,我认为这会在将谓词应用于每个条目之前一次性将每个节点中的条目集加载到内存中。请确认。
选项 2:employeeMap.executeOnEntries(entryProcessor);
入口处理器的process()
方法如下。
问题 2:我知道EntryProcessor
在分区线程中运行。我想知道它是否会在process()
调用方法之前一次性加载(反序列化)本地节点中的所有本地条目(并临时存储)。
问题 3:我想知道可用的最佳选择(就时间和空间复杂性而言)及其背后的基本原理。
java - hazelcast 地图中单个分区中的多个地图
我有两个定义如下的榛树地图。
我知道密钥被序列化(被转换为字节 [] 数组),然后被散列,其结果是没有分区的“mod”。这为我们提供了将存储数据的分区的 ID。此外,从每个成员的分区表中,它标识了分区的所有者。这意味着两者employeeObj
和family
具有相同的对象empKey
都将存储在同一个分区中。
我想知道这一步之后会发生什么。我了解密钥存储为 com.hazelcast.nio.serialization.Data 类(二进制形式)。是否会为每个哈希图维护单独的哈希桶,其键存在于给定分区中,以便更快地访问?
我知道分区数是可配置的,但我想在修改任何配置之前了解一些内部情况。
java - 为什么在hazelcast Map中违反了Map的一般合同,该合同要求在比较对象时使用equals方法
这更像是一个设计问题。我想知道为什么 hazelcast 使用对象hashCode()
的equals()
二进制(序列化)形式而不是复合键对象提供的形式。
我遇到了一个问题,我必须将一些元数据(等)与关键对象相关联lastModifiedTimeStamp
,lastModifiedNode
由于这种违规行为,这是不可能的。
虽然我确实知道还有其他方法可以解决我的问题,但将这些属性作为键的一部分(然后覆盖hashCode()
/equals()
方法以排除元数据)将是一种更简洁的方法。
java - 在使用 ArrayList 的衍生物作为 Hazelcast 中的值时需要自定义序列化程序
我有一个 IMAP,其键是 a String
,值是ArrayList
. 我需要EntryProcessor
在这张地图的一个键上运行。另请注意,这Employee
是一个 POJO 实现Serializable
接口的 POJO。
当我执行下面给出的代码时,代码会打印“为什么这样!” 我得到了ClassCastException
其中提到的java.util.ArrayList
不能用Employees
process()
ListValueEntryProcessor
转换的内容。
Q1。我了解到我需要为我的类型 ( Employees
) 添加自定义序列化程序,以便可以将其序列化为Employees
对象而不是ArrayList
对象。我想知道为什么必须为内置类型添加“自定义序列化程序”,例如ArrayList
其项目也被标记Serializable
?
java - Hazelcast缓存数据库数据缓存java
这个类实现了 MapStore
这是人员类包数据;导入 java.io.Serializable;
这个主要方法类,但我无法加载实例中的数据。
请帮我加载数据..它返回 null 我试图用两个节点运行它..但是数据库数据没有来..数据库插入可以同步反映在地图中
java - putAll 使用 Hazelcast IMap 导致单个 store() 调用
我有一个由 MapStore 实现支持的简单地图。当我在地图上调用 putAll() 并传递要添加到地图的键值对地图时,Hazelcast 出于某种原因为每个值调用 MapStore 上的 store() 方法,而不是调用 storeAll() 一次。
不知道为什么会发生这种行为。hazelcast 地图是否支持 putAll/storeAll 关系?
谢谢,康拉德