【TcaplusDB知识库】Tcaplus Go SDK手册(二)

阅读 12

2022-01-26

【TcaplusDB知识库】Tcaplus Go SDK手册(二)

4 接口列表

支持命令:
//Generic表插入请求
TcaplusApiInsertReq = 0x0001
//Generic表替换/插入请求
TcaplusApiReplaceReq = 0x0003
//Generic表增量更新请求
TcaplusApiIncreaseReq = 0x0005
//Generic表单条查询请求
TcaplusApiGetReq = 0x0007
//Generic表删除请求
TcaplusApiDeleteReq = 0x0009
//Generic表删除应答
TcaplusApiDeleteRes = 0x000a
//Generic表更新请求
TcaplusApiUpdateReq = 0x001d
//List表查询所有元素请求
TcaplusApiListGetAllReq = 0x000b
//Generic表批量查询请求
TcaplusApiBatchGetReq = 0x0017
//Generic表按索引查询请求
TcaplusApiGetByPartkeyReq  = 0x0019
//Generic表按索引更新请求
TcaplusApiUpdateByPartkeyReq = 0x004d
//Generic表按索引删除请求
TcaplusApiDeleteByPartkeyReq = 0x004f

4.1 Client接口

4.1.1 创建tcaplus client

/**
@brief 创建一个tcaplus api客户端
@retval 返回客户端指针
**/
func NewClient() *Client

4.1.2 日志配置接口

创建client之后,立刻调用

/**
@brief                   设置API日志配置文件全路径log.conf(json格式,example下有示例),请在client.Dial之前调用
@param [IN] cfgPath      日志配置文件全路径log.conf
@retval                  错误码
@note                    Api日志默认使用的zap,用户也可自行实现日志接口logger.LogInterface,调用SetLogger进行设置
**/
func (c *Client) SetLogCfg(cfgPath string) error
/**
@brief                   自定义API日志接口,用户实现logger.LogInterface日志接口,日志将打印到用户的日志接口中,请在client.Dial之前调用
@param [IN] handle       logger.LogInterface类型的日志接口
@retval                  错误码
**/
func (c *Client) SetLogger(handle logger.LogInterface)

4.1.3 连接tcaplus接口

/**
@brief 连接tcaplue函数
@param [IN] appId         appId,在网站注册相应服务以后,你可以得到该appId
@param [IN] zoneList      需要操作表的区服ID列表,操作的表在多个不同的zone,填zoneId列表;操作的表在一个zone,zone列表填一个zoneId
@param [IN] signature     签名/密码,在网站注册相应服务以后,你可以得到该字符串
@param [IN] dirUrl        目录服务器的url,形如"tcp://172.25.40.181:10600"
@param [IN] timeout       second, 连接所有表对应的tcaplus proxy服务器。若所有的proxy连通且鉴权通过,则立即返回成功;
若到达超时时间,只要有一个proxy连通且鉴权通过,也会返回成功;否则返回超时错误。
@retval                   错误码
**/
func (c *Client) Dial(appId uint64, zoneList []uint32, dirUrl string, signature string, timeout uint32) error

4.1.4 创建tcaplus请求

/**
@brief 创建指定分区指定表的tcaplus请求
@param [IN] zoneId              区服ID
@param [IN] tableName           表名
@param [IN] cmd                 命令字(cmd包中cmd.TcaplusApiGetReq等)
@retval request.TcaplusRequest  tcaplus请求
@retval error                   错误码
*/
func (c *Client) NewRequest(zoneId uint32, tableName string, cmd int) (request.TcaplusRequest, error)

4.1.5 发送tcaplus请求

/**
@brief 发送tcaplus请求
@param [IN] req       tcaplus请求
@retval error         错误码
*/
func (c *Client) SendRequest(req request.TcaplusRequest) error

4.1.6 异步接收tcaplus响应

/**
@brief 异步接收tcaplus响应
@retval response.TcaplusResponse tcaplus响应
@retval error 错误码
error nil,response nil 成功但当前无响应消息
error nil, response 非nil,成功获取响应消息
error 非nil,接收响应出错
*/
func (c *Client) RecvResponse() (response.TcaplusResponse, error)

4.1.7 发送tcaplus同步请求并接受响应

/**
@brief 发送tcaplus同步请求并接受响应
@param [IN] req tcaplus请求
@param [IN] timeout 超时时间
@retval response.TcaplusResponse tcaplus响应
@retval error 错误码
error nil,response nil 成功但当前无响应消息
error nil, response 非nil,成功获取响应消息
error 非nil,接收响应出错
**/
func (c *Client) Do(req request.TcaplusRequest, timeout time.Duration) (response.TcaplusResponse, error)

4.2 TcaplusRequest接口

4.2.1 添加记录

/**
@brief  向请求中添加一条记录。
@param [IN] index         用于List操作(目前不支持),通常>=0,表示该Record在所属List中的Index;对于Generic操作,index无意义,设0即可
@retval record.Record     返回记录指针
@retval error               错误码
**/
AddRecord(index int32) (*record.Record, error)

4.2.2 设置请求异步ID

/**
@brief  设置请求的异步事务ID,api会将其值不变地通过对应的响应消息带回来
@param  [IN] asyncId  请求对应的异步事务ID
**/
SetAsyncId(id uint64)

4.2.3 设置版本校验规则

/**
@brief  设置记录版本的检查类型,用于乐观锁
@param [IN] type   版本检测类型,取值可以为(policy包中):
CheckDataVersionAutoIncrease: 表示检测记录版本号,只有当record.SetVersion函数传入的参数version的值>0,并且版本号与服务器端的版本号相同时,请求才会成功同时在服务器端该版本号会自增1;如果record.SetVersion的version <=0,则仍然表示不关心版本号
NoCheckDataVersionOverwrite: 表示不检测记录版本号。当record.SetVersion函数传入的参数version的值>0,覆盖服务端的版本号;如果record.SetVersion的version <=0,则仍然表示不关心版本号
NoCheckDataVersionAutoIncrease: 表示不检测记录版本号,将服务器端的数据记录版本号自增1,若服务器端新写入数据记录则新写入的数据记录的版本号为1
@retval error      错误码
@note 此函数适合Replace, Update操作
**/
SetVersionPolicy(p uint8) error

4.2.4 设置响应标志

/**
@brief  设置响应标志。主要用于Generic表的insert、replace、update、delete操作。
@param  [IN] flag  请求标志:
0表示: 只需返回操作执行成功与否
1表示: 操作成功,响应返回与请求字段一致
2表示: 操作成功,响应返回变更记录的所有字段最新数据
3表示: 操作成功,响应返回变更记录的所有字段旧数据
@retval error      错误码
**/
SetResultFlag(flag int) error

4.2.5 部分字段查询和更新

/**
@brief 设置需要查询或更新的Value字段名称列表,即部分Value字段查询和更新,可用于get、replace、update操作。
@param [IN] valueNameList   需要查询或更新的字段名称列表
@retval error               错误码
@note  在使用该函数设置字段名时,字段名只能包含value字段名,不能包含key字段名;对于数组类型的字段,refer字段和数组字段要同时设置或者同时不设置,否则容易数据错乱
**/
SetFieldNames(valueNameList []string) error

4.2.6 设置用户缓存

/**
@brief 设置用户缓存,响应消息将携带返回
@param [IN] userBuffer  用户缓存
@retval error           错误码
**/
SetUserBuff(userBuffer []byte) error

4.3 Record接口

4.3.1 SetKey/SetValue和GetKey/GetValue接口

通过KV接口,对记录进行赋值(请求消息)和获取(响应消息)

/**
@brief  key字段内容设置
@param  [in] name   字段名称,最大长度32
@param  [in] data   字段内容
@retval error       错误码
*/
func (r *Record) SetKeyInt8(name string, data int8) error
func (r *Record) SetKeyInt16(name string, data int16) error
func (r *Record) SetKeyInt32(name string, data int32) error
func (r *Record) SetKeyInt64(name string, data int64) error
func (r *Record) SetKeyFloat32(name string, data float32) error
func (r *Record) SetKeyFloat64(name string, data float64) error
func (r *Record) SetKeyStr(name string, data string) error
func (r *Record) SetKeyBlob(name string, data []byte) error
/**
@brief  value字段内容设置
@param  [in] name   字段名称,最大长度32
@param  [in] data   字段内容
@retval error       错误码
*/
func (r *Record) SetValueInt8(name string, data int8) error
func (r *Record) SetValueInt16(name string, data int16) error
func (r *Record) SetValueInt32(name string, data int32) error
func (r *Record) SetValueInt64(name string, data int64) error
func (r *Record) SetValueFloat32(name string, data float32) error
func (r *Record) SetValueFloat64(name string, data float64) error
func (r *Record) SetValueStr(name string, data string) error
func (r *Record) SetValueBlob(name string, data []byte) error
/**
@brief  key字段内容获取
@param  [in] name   字段名称,最大长度32
@retval data        字段内容
@retval error       错误码
*/
func (r *Record) GetKeyInt8(name string) (int8, error)
func (r *Record) GetKeyInt16(name string) (int16, error)
func (r *Record) GetKeyInt32(name string) (int32, error)
func (r *Record) GetKeyInt64(name string) (int64, error)
func (r *Record) GetKeyFloat32(name string) (float32, error)
func (r *Record) GetKeyFloat64(name string) (float64, error)
func (r *Record) GetKeyStr(name string) (string, error)
func (r *Record) GetKeyBlob(name string) ([]byte, error)
/**
@brief  value字段内容获取
@param  [in] name   字段名称,最大长度32
@retval data        字段内容
@retval error       错误码
*/
func (r *Record) GetValueInt8(name string) (int8, error)
func (r *Record) GetValueInt16(name string) (int16, error)
func (r *Record) GetValueInt32(name string) (int32, error)
func (r *Record) GetValueInt64(name string) (int64, error)
func (r *Record) GetValueFloat32(name string) (float32, error)
func (r *Record) GetValueFloat64(name string) (float64, error)
func (r *Record) GetValueStr(name string) (string, error)
func (r *Record) GetValueBlob(name string) ([]byte, error)

4.3.2 SetData和GetData接口

通过TDR结构体,对记录进行赋值(请求消息)和获取(响应消息)

/**
@brief  基于TDR描述设置record数据
@param [IN] data  基于TDR描述record接口数据,tdr的xml通过工具生成的go结构体,包含的TdrTableSt接口的一系列方法
@retval error     错误码
*/
func (r *Record) SetData(data TdrTableSt) error
/**
@brief  基于TDR描述读取record数据
@param [IN] data   基于TDR描述record接口数据,tdr的xml通过工具生成的go结构体,包含的TdrTableSt接口的一系列方法
@retval error      错误码
**/
func (r *Record) GetData(data TdrTableSt) error

4.3.3 设置记录版本号

/**
@brief  设置记录版本号
@param [IN] v     数据记录的版本号:  <=0 表示不关注版本号不关心版本号。具体含义如下。
当CHECKDATAVERSION_AUTOINCREASE时: 表示检测记录版本号。
如果Version的值<=0,则仍然表示不关心版本号不关注版本号;
如果Version的值>0,那么只有当该版本号与服务器端的版本号相同时,
Replace, Update, Increase, ListAddAfter, ListDelete, ListReplace, ListDeleteBatch操作才会成功同时在服务器端该版本号会自增1。
当NOCHECKDATAVERSION_OVERWRITE时: 表示不检测记录版本号。
如果Version的值<=0,则会把版本号1写入服务端的数据记录版本号(服务器端成功写入的数据记录的版本号最少为1);
如果Version的值>0,那么会把该版本号写入服务端的数据记录版本号。
当NOCHECKDATAVERSION_AUTOINCREASE时: 表示不检测记录版本号,将服务器端的数据记录版本号自增1,若服务器端新写入数据记录则新写入的数据记录的版本号为1。
**/
func (r *Record) SetVersion(v int32)

4.3.4 获取记录版本号

/**
@brief  获取记录版本号
@retval 记录版本号
**/
func (r *Record) GetVersion() int32

4.4 TcaplusResponse接口

4.4.1 获取响应结果

/*
@brief  获取响应结果
@retval int tcaplus api自定义错误码。 0,表示请求成功;非0,有错误码,可从terror.GetErrMsg(int)得到错误消息
*/
GetResult() int

4.4.2 获取表名

/*
@brief  获取响应表名
@retval string 响应消息对应的表名称
*/
GetTableName() string

4.4.3 获取appId

/*
@brief  获取响应appId
@retval uint64 响应消息对应的appId
*/
GetAppId() uint64

4.4.4 获取zoneId

/*
@brief  获取响应zoneId
@retval uint32 响应消息对应的zoneId
*/
GetZoneId() uint32

4.4.5 获取响应命令字

/*
@brief  获取响应命令
@retval int 响应消息命令字,cmd包中的响应命令字
*/
GetCmd() int

4.4.6 获取响应异步ID

/*
@brief  获取响应异步id,和请求对应
@retval uint64 响应消息对应的异步id和请求对应
*/
GetAsyncId() uint64

4.4.7 获取响应中记录数

/*
@brief  获取本响应中结果记录条数
@retval int 响应中结果记录条数
*/
GetRecordCount() int

4.4.8 获取响应中一条记录

/*
@brief  从结果中获取一条记录
@retval *record.Record 记录指针
@retval error 错误码
*/
FetchRecord() (*record.Record, error)

4.4.9 获取响应中用户缓存信息

/**
@brief  获取响应消息中的用户缓存信息
@retval []byte 用户缓存二进制,和请求消息中的buffer内容一致
*/
GetUserBuffer() []byte

4.4.10 获取响应中的序列号

/**
@brief 获取响应消息中的序列号
**/
GetSeq() int32

【TcaplusDB知识库】Tcaplus Go SDK手册(二)_腾讯云

TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。

精彩评论(0)

0 0 举报