gpt4 book ai didi

java - 何时在启用后写的情况下在 Ignite 缓存存储中更新对象?

转载 作者:行者123 更新时间:2023-12-02 02:23:08 30 4
gpt4 key购买 nike

我有一个像这样的点燃缓存: IgniteCache缓存;

缓存配置为:

<property name="readThrough" value="true" />
<property name="writeThrough" value="true" />
<property name="writeBehindEnabled" value="true" />

以及用于 MariaDB 3rd 方持久性的 CacheStore。

<property name="cacheStoreFactory">
<bean class="javax.cache.configuration.FactoryBuilder"
factory-method="factoryOf">
<constructor-arg>
<bean class="my_backend_bean">
<constructor-arg value="jdbc:mariadb://xxxxx" />
<constructor-arg value="user" />
<constructor-arg value="password" />
</bean>
</constructor-arg>
</bean>
</property>

这似乎总体上运作良好。我看到使用 cache.put(key,object) 存储对象会快速返回,而 MariaDB 会异步更新。

但是,我遇到了一些问题,MariaDB 并不总是使用对象的最新值进行更新。我正在尝试找出原因。

这是我的问题:- 如果我执行一次cache.put("1", object),然后更改对象中的属性,然后再次执行cache.put("1", object),Ignite将调用缓存存储后端bean的write方法再次更新 MariaDB?我看到我的测试中发生了这种情况,但想知道 Ignite 什么时候可能不更新缓存存储?什么表明 Ignite 已针对同一 key 修改了对象?是否存在 Ignite 尚未将第一个对象写入存储而调用第二个 cache.put 的情况,这是否会导致不更新缓存存储的问题?- 我应该更好地检查cache.containsKey,然后调用cache.replace而不是cache.put吗?或者将替换实际调用我的缓存存储后端 bean 的删除函数?

谢谢!

最佳答案

当使用后写时,数据可以在缓冲区已满时刷新,也可以基于超时刷新。如果您没有看到更新,很可能尚未达到任何条件。请阅读此处了解更多详细信息:https://apacheignite.readme.io/docs/3rd-party-store#write-behind-caching

关于java - 何时在启用后写的情况下在 Ignite 缓存存储中更新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48197054/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com