以下代码保证以持久的方式将任何给定的文档保存到Couchbase集群中的活动节点,并复制到另一个节点:
cas, err := myBucket.UpsertDura(docToStore, valueToStore, 1, 1)考虑到Couchbase视图最终是一致的,在编写文档后调用视图时(确保文档出现在视图中),我似乎有两个选项可以保证一致性:
备选案文1
将上述代码中的replicateTo值更改为等于集群中附加节点的总数(减去活动节点),确保每个节点包含文档的副本:
cas, err := myBucket.UpsertDura(docToStore, valueToStore, 3, 4)选项2
使用标准Upsert函数保存文档,但调用stale-mode设置为after-update的视图
_, err := bucket.Upsert(myID, &myDoc, 0)
vq := gocb.NewViewQuery("doc", "view").Stale(gocb.StaleMode(1))
err = bucket.ExecuteViewQuery(vq)是否有其他可能以最有效的方式实现这一目标?基本上,我希望文档在保存后立即出现在所有相关视图中。
发布于 2016-02-11 13:14:43
您需要将陈旧模式设置为false。如果设置了stale=ok,即使视图陈旧,Couchbase也不会刷新它。这样做的好处是改进了查询延迟。如果设置了stale=update_after,Couchbase将在返回陈旧结果后更新视图。如果设置了stale=false,Couchbase将刷新视图并返回最更新的结果。
https://stackoverflow.com/questions/35339033
复制相似问题