Hazelcast:是否需要查询缓存索引?

时间:2018-04-19 11:33:36

标签: java hazelcast hazelcast-imap

简短代码示例:

HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);

IMap<Integer, Integer> clientMap = client.getMap(mapName);
clientMap.addIndex("user.id", false);

QueryCache<Integer, Integer> cache = clientMap.getQueryCache(cacheName);
cache.addIndex("user.id", false);

索引是应该添加到缓存和IMap还是仅添加到其中一个?

1 个答案:

答案 0 :(得分:1)

QueryCache或支持IMap不需要索引,但根据您的使用情况,索引可能有助于您的解决方案的效果。例如:

  • 如果查询缓存QueryCache可以利用索引,则地图上的索引可能会缩短最初填充Predicate所需的时间。您可以查看this trivial benchmark来比较初始化QueryCache所花费的时间(在我的本地索引时,初始查询缓存数量快几个数量级,但显然是YMMV)。 / p>

  • 如果您的用例涉及过滤查询缓存(例如,通过QueryCache.values(Predicate)),那么QueryCache上的索引将有助于加快查询速度。尽管如此,考虑到由于索引维护的开销导致QueryCache中更昂贵的写入,这是以此为代价的。

相关问题