我们使用 Hazelcast 作为缓存,并希望从单个 map 中读取包含 50 个项目的列表。目前我们发现读取此列表有相当长的延迟~20 毫秒。读取单个条目的速度非常快,但似乎扩展速度相当糟糕。我尝试过使用Imap方法
- .getAll(setOfKeys)
- 迭代列表并为每个列表调用 .get(singleKey)
- 迭代列表并调用 .getAsync(singleKey),然后迭代获取它们的 future 列表
是否有更好的方法来做到这一点,或者我是否需要重新考虑我们缓存/使用 Hazelcast 的方式,以某种方式将 map 上的 get 调用减少为单个调用。
一些附加信息
- map 中的项目总数约为 35,000
- 所有项目的大小约为 350MB,每个条目约为 10kb
- 我正在本地计算机上的 Spring Boot 应用程序中将其嵌入到 JVM 中运行
- 对 HazelcastInstance.getMap(mapName) 的调用耗时不到 1 毫秒
最佳答案
我想这在很大程度上取决于确切的设置,但从你的问题来看,你似乎没有尝试 entrySet()
。
我相信这将是最快的。
关于java - 从 Hazelcast Map 读取值列表的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60214695/