caching - Janusgraph 缓存
问题描述
我在 Janusgraph 文档中阅读了有关 Janusgraph Cache 的信息。我对事务缓存几乎没有疑问。我在我的应用程序中使用嵌入式 janusgrah 服务器。
- 如果我只是对例如进行读取查询。- G。V().has("name","ABC") 使用 gremlin HTTP 端点,那么这个值会被缓存在事务缓存还是数据库级缓存中?因为在这里我没有打开任何交易。
- 如果它存储在事务缓存中,如果我有多节点部署,如何获取该顶点的更新值?
解决方案
关于问题 1:
如果没有显式创建,则会自动创建事务。来自JanusGraph 参考文档:
JanusGraph 中的每个图操作都发生在事务的上下文中。根据 TinkerPop 的事务规范,每个线程通过对图的第一个操作(即检索或变异)打开针对图数据库的自己的事务。
在事务期间检索到的顶点存储在事务缓存和数据库缓存中。关闭事务后,顶点仍在数据库缓存中(但请注意,自 janusgraph-0.5.x 以来,默认情况下禁用数据库缓存)。
关于问题 2:
确实,JanusGraph 实例无法知道对其他实例事务缓存中顶点的修改。只有在这些事务关闭并持久化到存储和索引后端后,其他实例才能从后端读取修改后的顶点。这也意味着其他 JanusGraph 实例中的缓存可能已过期,因此如果您想确保您拥有来自后端的最新数据,您应该启动一个新事务并禁用数据库缓存(默认设置)。
附加评论(9 月 12 日添加):
顶点缓存是 JanusGraph 的私有成员,不会暴露给用户(甚至在调试日志中也没有)。遍历中的缓存命中仅在快速(亚毫秒)返回时间中可见。
如果事务或 janusgraph 实例之间的数据一致性对您很重要,您可以查看:
推荐阅读
- amazon-web-services - 有没有办法自定义 Elastic Beanstalk 创建的 EC2 实例的名称?
- android - Firebase Testlab 忽略 testInstrumentationRunnerArgument
- javascript - 如果 jwt 有错误,我该如何处理错误?
- python - 比较不同大小的数据帧
- jenkins - 从当前工作空间中创建的 xml 文件中读取 jenkinsfile 中的数据
- javascript - 自定义 html 5 播放器多个曲目不起作用
- c# - 字典包含它时不返回来自不同类的值
- javascript - 当我在passportJS中反序列化用户时,用户没有通过
- kotlin - readLine() 函数在 Intellij Kotlin 中不起作用
- python - 传输 JSON Django