日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

原子計(jì)數(shù)器

更新時(shí)間:

將列當(dāng)成一個(gè)原子計(jì)數(shù)器使用,對(duì)該列進(jìn)行原子計(jì)數(shù)操作,可用于為某些在線應(yīng)用提供實(shí)時(shí)統(tǒng)計(jì)功能,例如統(tǒng)計(jì)帖子的PV(實(shí)時(shí)瀏覽量)等。

前提條件

  • 已初始化OTSClient。具體操作,請(qǐng)參見初始化OTSClient

  • 已創(chuàng)建數(shù)據(jù)表并寫入數(shù)據(jù)。

限制

  • 只支持對(duì)整型列的列值進(jìn)行原子計(jì)數(shù)操作。
  • 作為原子計(jì)數(shù)器的列,如果寫入數(shù)據(jù)前該列不存在,則默認(rèn)值為0;如果寫入數(shù)據(jù)前該列已存在且列值非整型,則產(chǎn)生OTSParameterInvalid錯(cuò)誤。
  • 增量值可以是正數(shù)或負(fù)數(shù),但不能出現(xiàn)計(jì)算溢出。如果出現(xiàn)計(jì)算溢出,則產(chǎn)生OTSParameterInvalid錯(cuò)誤。
  • 默認(rèn)不返回進(jìn)行原子計(jì)數(shù)操作的列值,可以通過相應(yīng)操作指定返回進(jìn)行原子計(jì)數(shù)操作的列值。
  • 在單次更新請(qǐng)求中,不能對(duì)某一列同時(shí)進(jìn)行更新和原子計(jì)數(shù)操作。假設(shè)列A已經(jīng)執(zhí)行原子計(jì)數(shù)操作,則列A不能再執(zhí)行其他操作(例如列的覆蓋寫,列刪除等)。
  • 在一次BatchWriteRow請(qǐng)求中,支持對(duì)同一行進(jìn)行多次更新操作。但是如果某一行已進(jìn)行原子計(jì)數(shù)操作,則該行在此批量請(qǐng)求中只能出現(xiàn)一次。
  • 原子計(jì)數(shù)操作只能作用在列值的最新版本,不支持對(duì)列值的特定版本做原子計(jì)數(shù)操作。更新完成后,原子計(jì)數(shù)操作會(huì)插入一個(gè)新的數(shù)據(jù)版本。

接口

rowUpdateChange類中新增了原子計(jì)數(shù)器的操作接口,操作接口說明請(qǐng)參見下表。

接口

說明

RowUpdateChange increment(Column column)

對(duì)列執(zhí)行增量變更,例如+X,-X等。

void addReturnColumn(String columnName)

對(duì)于進(jìn)行原子計(jì)數(shù)操作的列,設(shè)置需要返回列值的列名。

void setReturnType(ReturnType returnType)

設(shè)置返回類型,返回進(jìn)行原子計(jì)數(shù)操作的列的新值。

參數(shù)

參數(shù)

說明

tableName

數(shù)據(jù)表名稱。

columnName

進(jìn)行原子計(jì)數(shù)操作的列名。只支持對(duì)整型列的列值進(jìn)行原子計(jì)數(shù)器操作。

value

對(duì)列進(jìn)行增量變更的值。

returnType

設(shè)置返回類型為ReturnType.RT_AFTER_MODIFY,將進(jìn)行原子計(jì)數(shù)操作的列值返回。

示例

寫入數(shù)據(jù)時(shí),使用rowUpdateChange接口對(duì)整型列做列值的增量變更,然后讀取更新后的新值。

private static void incrementByUpdateRowApi(SyncClient client) {
    //構(gòu)造主鍵。
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("<PRIMARY_KEY_NAME>", PrimaryKeyValue.fromString("pk0"));
    PrimaryKey primaryKey = primaryKeyBuilder.build();
    //設(shè)置數(shù)據(jù)表名稱。
    RowUpdateChange rowUpdateChange = new RowUpdateChange("<TABLE_NAME>", primaryKey); 

    //將進(jìn)行原子計(jì)數(shù)操作的price列的列值+10,不能設(shè)置時(shí)間戳。
    rowUpdateChange.increment(new Column("price", ColumnValue.fromLong(10)));

    //設(shè)置returnType為ReturnType.RT_AFTER_MODIFY,將進(jìn)行原子計(jì)數(shù)操作的列值返回。
    rowUpdateChange.addReturnColumn("price");
    rowUpdateChange.setReturnType(ReturnType.RT_AFTER_MODIFY);

    //對(duì)price列進(jìn)行原子計(jì)數(shù)操作。
    UpdateRowResponse response = client.updateRow(new UpdateRowRequest(rowUpdateChange));

    //打印更新后的新值。
    Row row = response.getRow();
    System.out.println(row);
}