原子计数器是将列当成一个原子计数器来使用,为某些在线应用提供实时统计功能,例如统计帖子的PV(实时浏览量)等。

说明 原子计数器的详细介绍参见原子计数器

接口说明

RowUpdateChange类中新增了原子计数器的操作接口:
  • IncrementColumn(columnName string, value int64):对列执行增量变更(如:+X、-X等)。
  • AppendIncrementColumnToReturn(name string):指定对哪一列进行原子计数器操作。
  • SetReturnIncrementValue():设置返回类型,并返回该列的新值。

示例

写入数据时,使用RowUpdateChange接口对整型列的列值的进行增量变更,示例代码如下。
func UpdateRowWithIncrement(client *tablestore.TableStoreClient, tableName string) {
    fmt.Println("begin to update row")
    updateRowRequest = new(tablestore.UpdateRowRequest)
    updateRowChange = new(tablestore.UpdateRowChange)
    updateRowChange.TableName = tableName
    updatePk = new(tablestore.PrimaryKey)
    updatePk.AddPrimaryKeyColumn("pk1", "pk1increment")
    updatePk.AddPrimaryKeyColumn("pk2", int64(2))
    updatePk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
    updateRowChange.PrimaryKey = updatePk

    updateRowChange.IncrementColumn("col2", int64(30))
    updateRowChange.SetReturnIncrementValue()
    updateRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
    updateRowChange.AppendIncrementColumnToReturn("col2")
    updateRowRequest.UpdateRowChange = updateRowChange

    resp, err := client.UpdateRow(updateRowRequest)
    if err != nil {
        fmt.Println("update failed with error:", err)
        return
    } else {
        fmt.Println("update row finished")
        fmt.Println(resp)
        fmt.Println(len(resp.Columns))
        fmt.Println(resp.Columns[0].ColumnName)
        fmt.Println(resp.Columns[0].Value)
        fmt.Println(resp.Columns[0].Timestamp)
    }
}