我目前正在使用Hazelcast Community Edition作为用于Web应用程序的缓存机制,因此需要快速。
目前,我们在那里存储 lot 数据,而且这种情况正在增长。由于它是内存数据库,因此RAM很昂贵。所以想知道最佳实践是什么。我计划在缓存中只存储少量数据,并将其余数据存储在MongoDB中。我希望Hazelcast只有在无法找到的情况下才能保留并从MongoDB获取数据。
我已经创建了mapstore,但我不知道如何告诉它"看看"在MongoDB中,它无法在缓存中找到数据。如果此结果为空,那么只是getMap("something")
的情况,那么来自MapStore的是load("")
吗?
由于
答案 0 :(得分:0)
在EAGER模式下,它将加载地图init上的所有条目(所以在hz.getMap()上) 在LAZY模式下,它会在第一次触摸时加载分区。
此外,如果你执行map.get()并且IMap中没有值,它将尝试使用MapLoader.load(key)方法从MapLoader加载该值。
此外,如果你执行map.put()并且IMap中没有值,它将执行MapLoader.load(key),因为put方法应该返回先前的值。如果你想避免使用map.set()。
如果您查看与MapStore / MapLoader相关的手册部分也会很好。它应该描述所有微妙的差异。