繁体   English   中英

Couchbase视图一致性

[英]Couchbase View Consistency

以下代码确保将任何给定文档以持久方式保存到Couchbase群集中的活动节点,并复制到1个其他节点:

cas, err := myBucket.UpsertDura(docToStore, valueToStore, 1, 1)

鉴于Couchbase Views最终是一致的,看来在编写文档后调用视图时(确保文档出现在视图中),我有2种选择来保证一致性:

选项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)

是否有其他选择可以以最高效的方式实现这一目标? 本质上,我希望该文档在保存后立即出现在所有相对视图中。

您需要将陈旧模式设置为false。 如果设置了stale = ok,则即使视图已过时,Couchbase也不会刷新视图。 这样做的好处是改善了查询延迟。 如果设置了stale = update_after,则Couchbase将在返回过时的结果后更新视图。 如果设置了stale = false,则Couchbase将刷新视图并返回最新的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM