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

Java Hazelcast:是否需要查询缓存上的索引?,java,hazelcast,hazelcast-imap,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.getQuer

简短代码示例:

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);
HazelcastInstance客户端=HazelcastClient.newHazelcastClient(clientConfig);
IMap clientMap=client.getMap(mapName);
clientMap.addIndex(“user.id”,false);
QueryCache cache=clientMap.getQueryCache(cacheName);
cache.addIndex(“user.id”,false);

索引应该添加到缓存和IMap中,还是只添加到两者中的一个?

QueryCache
或backing
IMap
上不需要索引,但根据您的使用情况,索引可能有助于提高解决方案的性能。例如:

  • 如果查询缓存的
    谓词
    可以利用索引,则映射上的索引可能会缩短最初填充
    QueryCache
    所需的时间。您可以查看以比较初始化
    QueryCache
    所用的时间(在我的本地计算机上,当映射被索引时,初始查询缓存填充速度要快几个数量级,但显然是YMMV)

  • 如果您的用例涉及过滤查询缓存(例如通过
    QueryCache.values(谓词)
    ),那么
    QueryCache
    上的索引将有助于加快查询速度。不过,考虑到这是以牺牲代码维护的开销为代价的,在代码> QueRealCux中编写的更昂贵的开销。