简短代码示例:
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还是仅添加到其中一个?
答案 0 :(得分:1)
QueryCache
或支持IMap
不需要索引,但根据您的使用情况,索引可能有助于您的解决方案的效果。例如:
如果查询缓存QueryCache
可以利用索引,则地图上的索引可能会缩短最初填充Predicate
所需的时间。您可以查看this trivial benchmark来比较初始化QueryCache
所花费的时间(在我的本地索引时,初始查询缓存数量快几个数量级,但显然是YMMV)。 / p>
如果您的用例涉及过滤查询缓存(例如,通过QueryCache.values(Predicate)
),那么QueryCache
上的索引将有助于加快查询速度。尽管如此,考虑到由于索引维护的开销导致QueryCache
中更昂贵的写入,这是以此为代价的。