gpt4 book ai didi

java - couchbase golang json 原子增量

转载 作者:数据小太阳 更新时间:2023-10-29 03:28:33 24 4
gpt4 key购买 nike

在其他 couchbase SDK 中是否有类似于计数器的 golang API 可以帮助我们自动增加 json 文档中的某些字段?

例如,我有一个下面的结构,其中有两个字段将与文档 D1 相关联

type Counter struct {
c1 string `json:"c1"`
c2 string `json:"c2"`
}

对于传入的每个 http 请求,我想对 c1 和 c2 进行原子增量。因为它在一个 json 文档中,所以我无法使用 GET 并且不确定如何使用 golang 来使用计数器方法。

最佳答案

在文档中不可能有原子计数器,您有两种选择来解决这个问题:

1) 让您的文档引用单独的原子计数器,而不是保存计数器值,它们将只保存指向计数器的键。类似于下面的 json,如果您检索了文档然后要使用计数器,您将使用“counter_key”中的值。

{
"id": "customer::1343"
"name": "John Smith",
"counter_key": "counter::customer::1343"
}

2) 您的第二个选择是将字段保留在您想要递增的 Json 文档中,为了能够自动更新它,您需要查看 CAS,这是一种乐观锁定形式,它允许您更新实际文档中的值而不是使用单独的计数器,此方法确实会引入额外的编码开销,并且不会像单独的计数器那样高效。您可以在此处阅读有关 CAS 的更多信息:http://docs.couchbase.com/developer/dev-guide-3.0/retrieve-by-cas.html

Stack Overflow 上也有 Couchbase CAS 的简洁描述:What is CAS in nosql and how to use it?

关于java - couchbase golang json 原子增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30583844/

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