Ignite 点燃驱逐、到期和重新平衡如何与外部CacheStore一起工作

Ignite 点燃驱逐、到期和重新平衡如何与外部CacheStore一起工作,ignite,gridgain,Ignite,Gridgain,Ignite文档清楚地解释了当拓扑更改时,它们会自动处理缓存数据重新平衡,以保持数据在集群中均匀分布 例如,如果我使用CacheStore()在MySQL中持久化缓存条目,那么即使从我的RDBMS中也会发生缓存逐出/过期吗 例如,我有一个缓存大小大于10的LRU逐出策略。那么Ignite会从我的数据库中删除旧条目以保留最近的10个条目吗?对于过期,它也会从数据库中删除吗?这些机制(逐出、过期和重新平衡)都与CacheStore无关 逐出和过期根据条目的数量和期限控制Ignite缓存中存在的条目数

Ignite文档清楚地解释了当拓扑更改时,它们会自动处理缓存数据重新平衡,以保持数据在集群中均匀分布

例如,如果我使用CacheStore()在MySQL中持久化缓存条目,那么即使从我的RDBMS中也会发生缓存逐出/过期吗


例如,我有一个缓存大小大于10的LRU逐出策略。那么Ignite会从我的数据库中删除旧条目以保留最近的10个条目吗?对于过期,它也会从数据库中删除吗?

这些机制(逐出、过期和重新平衡)都与CacheStore无关

逐出和过期根据条目的数量和期限控制Ignite缓存中存在的条目数量。如果某个条目过期/被逐出,则该条目不会反映在后台数据库中


重新平衡缓存数据物理位置的更改。它不会删除任何数据-不在缓存中,也不在备份数据库中。

Ignite过期策略不会从数据库中删除条目,只会删除内存。请理解。但如果我在ignite 2.x中使用本机持久性(正如我所知,仅限于磁盘),过期/逐出会在磁盘上工作吗?不会。持久性应该无限期地存储数据,并且需要过期/逐出来保存主内存,而不是磁盘空间。如果RAM中缺少密钥,ignite不是去磁盘读取它吗?如果是这样,则可能存在与持久性模型不一致的缓存。因为条目可以在RAM中进行evicated/过期,但它可以在磁盘中。用户如何处理这种情况?因为是Ignite直接处理磁盘,而不是Ignite API用户。很抱歉,我之前关于本机持久性的评论不正确。正如您所猜测的,本机持久性实际上工作方式不同,过期条目将从持久性中删除。在沙箱里仔细检查了一下。谢谢你的跟进。cache.remove(key)也会将其从磁盘中删除。但这不适用于到期日。假设您使用1min创建的过期策略创建了一个缓存,-启动JVM并检查密钥,它就在那里。-等一分钟,看看它消失了。到目前为止,一切都很好重新启动JVM。现在,考虑到它支持持久性,我希望cache.get(key)==null。但事实并非如此。它只在JVM运行时工作,并且密钥永远在JVM中。这不是很不一致吗?如果有人重启JVM,他可能会得到过期的数据。