[英]Couchbase View Consistency
以下代码确保将任何给定文档以持久方式保存到Couchbase群集中的活动节点,并复制到1个其他节点:
cas, err := myBucket.UpsertDura(docToStore, valueToStore, 1, 1)
鉴于Couchbase Views最终是一致的,看来在编写文档后调用视图时(确保文档出现在视图中),我有2种选择来保证一致性:
更改上面代码中的replicateTo
值,使其等于集群中其他节点的总数(减去活动节点),确保每个节点都包含文档的副本:
cas, err := myBucket.UpsertDura(docToStore, valueToStore, 3, 4)
使用标准的Upsert
函数保存文档,但是使用stale-mode
设置为after-update
调用视图
_, err := bucket.Upsert(myID, &myDoc, 0)
vq := gocb.NewViewQuery("doc", "view").Stale(gocb.StaleMode(1))
err = bucket.ExecuteViewQuery(vq)
是否有其他选择可以以最高效的方式实现这一目标? 本质上,我希望该文档在保存后立即出现在所有相对视图中。
您需要将陈旧模式设置为false。 如果设置了stale = ok,则即使视图已过时,Couchbase也不会刷新视图。 这样做的好处是改善了查询延迟。 如果设置了stale = update_after,则Couchbase将在返回过时的结果后更新视图。 如果设置了stale = false,则Couchbase将刷新视图并返回最新的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.