java - Hazelcast 缓存数据量

标签 java hazelcast

在我的项目中,计划使用 Hazelcast 缓存来提高性能,而不是每次都查询数据库表。数据库表中可能有接近 100 万条记录。该应用程序使用集群环境(最少4个节点)。

我可以将 100 万条记录加载到缓存中吗? 缓存中有 100 万条记录,检索数据时会出现性能问题吗? 缓存中可以存储的理想记录数是多少?

最佳答案

当然,您可以在 Hazelcast 映射中保留 100 万条记录,但请注意,获取和放置操作的成本很高,因为它们涉及内部网络操作来分发数据。如果您尝试遍历一组键或循环遍历大量条目,这将很重要。
建议对数据进行分区,以减少访问聚类图的次数。
例如,如果有一个 Employee 表,并且您想缓存所有员工数据。根据您的使用情况和获取操作,将整个表划分为多个 block 。在这种情况下,将员工记录分组为地理明智、位置明智或分配项目明智等。然后具有可以进入 Hazelcast map 的唯一键,并且值可以是员工记录的集合/ map 。这样,您将访问一次集群(因此访问一次网络),然后在本地 JVM 中处理记录。

在您的情况下,如果您一次提取并处理一个记录,那么将所有记录推送到映射中并对唯一键进行获取操作是有意义的。您可以有一个后台操作来负责刷新 map 中的记录。

此外,您还可以利用 NearCache 在客户端本地保存副本,以便更快地访问。它是客户端配置的一部分,如果启用 NearCache,第一个获取操作将从集群映射中提取条目并将其保留在本地,以便后续操作将与本地映射一样好。您可以为条目类型设置超时,以便它可以在一定时间后刷新集群中的条目。默认情况下,只要分布式映射中相应的条目更新,该条目就会失效。

关于java - Hazelcast 缓存数据量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397303/

相关文章:

java - new 关键字在这里做什么?

java - Hazelcast如何获取当前所有锁?

java - 自定义对象中的 Hazelcast 查询

java - 使用 DbUtils 从 SQL 添加列到现有表

java - GWT 客户端 : java. util 还是 com.google.gwt.dev.util?

java - native 混合 Java 代码如何实现平台无关?

java - 如何从字母数字文本中删除前导零?

java - 连接到服务器时 hazelcast 客户端异常

java - Hazelcast:如何在 hazelcast 中使用列表作为键

java - 使用 Hazelcast 的执行器