TairHash(exHash)是一种可为field设置过期时间和版本的Hash类型数据结构,提高了Hash数据结构的灵活性,简化了很多场景下的业务开发工作。

TairHash简介

TairHash不但和Redis Hash一样支持丰富的数据接口和高处理性能,还改变了hash只能为key设置过期时间的限制,可以为field设置过期时间和版本,极大地提高了hash数据结构的灵活性,简化了很多场景下的业务开发工作。TairHash使用高效的Active Expire算法,可以在不对响应时间造成明显影响的前提下,更高效的完成对field的过期判断和删除。

主要特征

  • field支持单独设置expire和version。

  • field支持高效灵活的主动、被动过期淘汰(expire)策略。

  • 语法和原生Redis Hash数据类型类似。

该Module已开源,更多信息请参见TairHash

前提条件

实例为Tair

说明

最新小版本将提供更丰富的功能与稳定的服务,建议将实例的小版本升级到最新,具体操作请参见升级小版本。如果您的实例为集群架构或读写分离架构,请将代理节点的小版本也升级到最新,否则可能出现命令无法识别的情况。

注意事项

操作对象为Tair实例中的TairHash数据。

命令列表

表 1. TairHash命令

命令

语法

说明

EXHSET

EXHSET key field value [EX time] [EXAT time] [PX time] [PXAT time] [NX | XX] [VER | ABS version] [KEEPTTL]

向Key指定的TairHash中插入一个field。如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。

EXHGET

EXHGET key field

获取key指定的TairHash中一个field的值,如果TairHash不存在或者field不存在,则返回nil。

EXHMSET

EXHMSET key field value [field value ...]

同时向key指定的TairHash中插入多个field,如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。

EXHPEXPIREAT

EXHPEXPIREAT key field milliseconds-timestamp [VER | ABS version]

在key指定的TairHash中为一个field设置绝对过期时间,精确到毫秒。

EXHPEXPIRE

EXHPEXPIRE key field milliseconds [VER | ABS version]

在key指定的TairHash中为一个field设置相对过期时间,单位为毫秒。

EXHEXPIREAT

EXHEXPIREAT key field timestamp [VER | ABS version]

在key指定的TairHash中为一个field设置绝对过期时间,精确到秒。

EXHEXPIRE

EXHEXPIRE key field seconds [VER | ABS version]

在key指定的TairHash中为一个field设置相对过期时间,单位为秒。

EXHPTTL

EXHPTTL key field

查看key指定的TairHash中一个field的剩余过期时间,结果精确到毫秒。

EXHTTL

EXHTTL key field

查看key指定的TairHash中一个field的过期时间,结果精确到秒。

EXHVER

EXHVER key field

查看key指定的TairHash中一个field的当前版本号。

EXHSETVER

EXHSETVER key field version

设置key指定的TairHash中一个field的版本号。

EXHINCRBY

EXHINCRBY key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

将key指定的TairHash中一个field的value增加num,num为一个整数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。

说明

为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。

EXHINCRBYFLOAT

EXHINCRBYFLOAT key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

将key指定的TairHash中一个field的value增加num,num为一个浮点数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。

说明

为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。

EXHGETWITHVER

EXHGETWITHVER key field

同时获取key指定的TairHash一个field的值和版本,如果TairHash不存在或者field不存在,则返回nil。

EXHMGET

EXHMGET key field [field ...]

同时获取key指定的TairHash多个field的值,如果TairHash不存在或者field不存在,则返回nil。

EXHMGETWITHVER

EXHMGETWITHVER key field [field ...]

同时获取key指定的TairHash多个field的值和版本。

EXHLEN

EXHLEN key [NOEXP]

获取key指定的TairHash中field个数,该命令不会触发对过期field的被动淘汰,也不会将其过滤掉,所以结果中可能包含已经过期但还未被删除的field。如果只想返回当前没有过期的field个数,可以在命令中设置NOEXP选项。

EXHEXISTS

EXHEXISTS key field

查询key指定的TairHash中是否存在对应的field。

EXHSTRLEN

EXHSTRLEN key field

获取key指定的TairHash中一个field对应的value的长度。

EXHKEYS

EXHKEYS key

获取key指定的TairHash中所有的field。

EXHVALS

EXHVALS key

获取key指定的TairHash中所有field的值。

EXHGETALL

EXHGETALL key

获取key指定的TairHash中所有field及其value。

EXHSCAN

EXHSCAN key op subkey [MATCH pattern] [COUNT count]

扫描Key指定的TairHash。

说明

仅内存型实例支持该命令。

EXHSCANUNORDER

EXHSCANUNORDER key cursor [MATCH pattern] [COUNT count]

扫描Key指定的TairHash。

说明

仅持久内存型实例支持该命令。

EXHDEL

EXHDEL key field [field ...]

删除key指定的TairHash中的一个field,如果TairHash不存在或者field不存在则返回0 ,成功删除返回1。

DEL

DEL <key> [key ...]

使用原生Redis的DEL命令可以删除一条或多条TairHash数据。

说明

本文的命令语法定义如下:

  • 大写关键字:命令关键字。

  • 斜体:变量。

  • [options]:可选参数,不在括号中的参数为必选。

  • A|B:该组参数互斥,请进行二选一或多选一。

  • ...:前面的内容可重复。

EXHSET

类别

说明

语法

EXHSET key field value [EX time] [EXAT time] [PX time] [PXAT time] [NX | XX] [VER | ABS version] [KEEPTTL]

时间复杂度

O(1)

命令描述

向Key指定的TairHash中插入一个field。如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。

说明
  • 为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。

  • 您也可以通过EXPIREEXPIREAT命令设置Key的过期时间。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • value:field对应的值,一个field只能有一个value。

  • EX:指定field的相对过期时间,单位为秒,为0表示马上过期,不传此参数表示不过期

  • EXAT:指定field的绝对过期时间,单位为秒,为0表示马上过期,不传此参数表示不过期

  • PX:指定field的相对过期时间,单位为毫秒,为0表示马上过期,不传此参数表示不过期

  • PXAT:指定field的绝对过期时间,单位为毫秒 ,为0表示马上过期,不传此参数表示不过期

  • NX:只在field不存在时插入。

  • XX:只在field存在时插入。

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

  • KEEPTTL:在不指定EX、EXAT、PX或PXAT选项时,使用KEEPTTL选项会保留field当前的过期设置。

    说明

    若不使用KEEPTTL选项,EXHSET命令会默认删除field上原先设置的过期时间。

返回值

  • 新建field并成功为它设置值:1。

  • field已经存在,成功覆盖旧值:0。

  • 指定了XX且field不存在:-1。

  • 指定了NX且field已经存在:-1。

  • 指定了VER且版本和当前版本不匹配:"ERR update version is stale"。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHSET myhash field1 val EX 10

返回示例:

(integer) 1

EXHGET

类别

说明

语法

EXHGET key field

时间复杂度

O(1)

命令描述

获取key指定的TairHash中一个field的值,如果TairHash不存在或者field不存在,则返回nil。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • field存在且操作成功:field对应的值。

  • key不存在或者field不存在:nil。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHSET myhash field1 val命令。

命令示例:

EXHGET myhash field1

返回示例:

"val"

EXHMSET

类别

说明

语法

EXHMSET key field value [field value ...]

时间复杂度

O(N)

命令描述

同时向key指定的TairHash中插入多个field,如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。

说明

创建Key后,您可以通过EXHPEXPIREATEXHPEXPIREEXHEXPIREATEXHEXPIRE命令设置field的过期时间,您也可以通过EXPIREEXPIREAT命令设置Key的过期时间。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • value:field对应的值,一个field只能有一个value。

返回值

  • 成功:OK。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHMSET myhash field1 val1 field2 val2

返回示例:

OK

EXHPEXPIREAT

类别

说明

语法

EXHPEXPIREAT key field milliseconds-timestamp [VER | ABS version]

时间复杂度

O(1)

命令描述

在key指定的TairHash中为一个field设置绝对过期时间,精确到毫秒。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • milliseconds-timestamp:精确到毫秒的UNIX 时间戳 (Unix timestamp)。

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

返回值

  • field存在且设置成功:1。

  • field不存在:0。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHPEXPIREAT myhash field1 1293840000

返回示例:

(integer) 1

EXHPEXPIRE

类别

说明

语法

EXHPEXPIRE key field milliseconds [VER | ABS version]

时间复杂度

O(1)

命令描述

在key指定的TairHash中为一个field设置相对过期时间,单位为毫秒。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • milliseconds:相对过期时间,单位为毫秒。

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

返回值

  • field存在且设置成功:1。

  • field不存在:0。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHPEXPIRE myhash field1 1000

返回示例:

(integer) 1

EXHEXPIREAT

类别

说明

语法

EXHEXPIREAT key field timestamp [VER | ABS version]

时间复杂度

O(1)

命令描述

在key指定的TairHash中为一个field设置绝对过期时间,精确到秒。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • timestamp:精确到秒的UNIX 时间戳 (Unix timestamp)。

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

返回值

  • field存在且设置成功:1。

  • field不存在:0。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHEXPIREAT myhash field1 1293840000

返回示例:

(integer) 1

EXHEXPIRE

类别

说明

语法

EXHEXPIRE key field seconds [VER | ABS version]

时间复杂度

O(1)

命令描述

在key指定的TairHash中为一个field设置相对过期时间,单位为秒。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • seconds:相对过期时间,单位为秒。

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

返回值

  • field存在且设置成功:1。

  • field不存在:0。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHEXPIRE myhash field1 100

返回示例:

(integer) 1

EXHPTTL

类别

说明

语法

EXHPTTL key field

时间复杂度

O(1)

命令描述

查看key指定的TairHash中一个field的剩余过期时间,结果精确到毫秒。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • field存在但是没有设置过期时间:-1。

  • key或者field不存在:-2。

  • field不存在:-3。

  • field存在且设置了过期时间:过期时间,单位为毫秒。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHSET myhash field1 val1 EX 100命令。

命令示例:

EXHPTTL myhash field1

返回示例:

(integer) 97213

EXHTTL

类别

说明

语法

EXHTTL key field

时间复杂度

O(1)

命令描述

查看key指定的TairHash中一个field的过期时间,结果精确到秒。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key或者field不存在:-2。

  • field存在但是没有设置过期时间:-1。

  • field存在且设置了过期时间:过期时间,单位为秒。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHSET myhash field1 val1 EX 100命令。

命令示例:

EXHTTL myhash field1

返回示例:

(integer) 85

EXHVER

类别

说明

语法

EXHVER key field

时间复杂度

O(1)

命令描述

查看key指定的TairHash中一个field的当前版本号。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key不存在:-1。

  • field不存在:-2。

  • 查询成功:field的版本号。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHVER myhash field1

返回示例:

(integer) 1

EXHSETVER

类别

说明

语法

EXHSETVER key field version

时间复杂度

O(1)

命令描述

设置key指定的TairHash中一个field的版本号。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • TairHash或者field不存在:0。

  • 设置成功:1。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHSETVER myhash field1 3

返回示例:

(integer) 1

EXHINCRBY

类别

说明

语法

EXHINCRBY key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

时间复杂度

O(1)

命令描述

将key指定的TairHash中一个field的value增加num,num为一个整数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。

说明

为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • num:需要为field的value增加的整数值。

  • EX:指定field的相对过期时间,单位为秒,为0表示马上过期,不传此参数表示不过期

  • EXAT:指定field的绝对过期时间,单位为秒,为0表示马上过期,不传此参数表示不过期

  • PX:指定field的相对过期时间,单位为毫秒,为0表示马上过期,不传此参数表示不过期

  • PXAT:指定field的绝对过期时间,单位为毫秒 ,为0表示马上过期,不传此参数表示不过期

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

  • MIN:value的最小值,小于该值则提示异常。

  • MAX:value的最大值,大于该值则提示异常。

  • KEEPTTL:在不指定EX、EXAT、PX或PXAT选项时,使用KEEPTTL选项会保留field当前的过期设置。

返回值

  • 成功:与num相加后value的值。

  • 其它情况返回异常。

示例

提前执行EXHMSET myhash field1 10命令。

命令示例:

EXHINCRBY myhash field1 100

返回示例:

(integer) 110

EXHINCRBYFLOAT

类别

说明

语法

EXHINCRBYFLOAT key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL]

时间复杂度

O(1)

命令描述

将key指定的TairHash中一个field的value增加num,num为一个浮点数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。

说明

为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

  • num:需要为field的value增加的值,类型为浮点。

  • EX:指定field的相对过期时间,单位为秒,为0表示马上过期,不传此参数表示不过期

  • EXAT:指定field的绝对过期时间,单位为秒,为0表示马上过期,不传此参数表示不过期

  • PX:指定field的相对过期时间,单位为毫秒,为0表示马上过期,不传此参数表示不过期

  • PXAT:指定field的绝对过期时间,单位为毫秒 ,为0表示马上过期,不传此参数表示不过期

  • VER:版本号。

    • 如果field存在,和当前版本号做比较:

      • 如果相等,继续操作,且版本号加1。

      • 如果不相等,返回异常。

    • 如果field不存在或者field当前版本为0,忽略传入的版本号并继续操作,成功后版本号变为1。

  • ABS:绝对版本号,不论field是否存在,可以在插入field时设置为本参数所指定的版本号。

  • MIN:value的最小值,小于该值则提示异常。

  • MAX:value的最大值,大于该值则提示异常。

  • KEEPTTL:在不指定EX、EXAT、PX或PXAT选项时,使用KEEPTTL选项会保留field当前的过期设置。

返回值

  • 成功:与num相加后value的值。

  • 其它情况返回异常。

示例

提前执行EXHMSET myhash field1 10命令。

命令示例:

EXHINCRBYFLOAT myhash field1 9.235

返回示例:

"19.235"

EXHGETWITHVER

类别

说明

语法

EXHGETWITHVER key field

时间复杂度

O(1)

命令描述

同时获取key指定的TairHash一个field的值和版本,如果TairHash不存在或者field不存在,则返回nil。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • field存在且操作成功:field对应的值和版本。

  • key不存在或者field不存在:nil。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHGETWITHVER myhash field1

返回示例:

1) "19.235"
2) (integer) 5

EXHMGET

类别

说明

语法

EXHMGET key field [field ...]

时间复杂度

O(1)

命令描述

同时获取key指定的TairHash多个field的值,如果TairHash不存在或者field不存在,则返回nil。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key不存在:nil。

  • key存在且查询的所有field都存在:返回一个数组,数组的每一个元素对应一个field的value。

  • key存在且查询的field中有不存在的:返回一个数组,数组的每一个元素对应一个field的value,不存在的field对应的元素显示为nil。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhash field1 10 field2 var1命令。

命令示例:

EXHMGET myhash field1 field2

返回示例:

1) "10"
2) "var1"

EXHMGETWITHVER

类别

说明

语法

EXHMGETWITHVER key field [field ...]

时间复杂度

O(1)

命令描述

同时获取key指定的TairHash多个field的值和版本。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key不存在:nil。

  • key存在且查询的所有field都存在:返回一个数组,数组的每一个元素对应一个field的value和version。

  • key存在且查询的field中有不存在的:返回一个数组,数组的每一个元素对应一个field的value和version,不存在的field对应的元素显示为nil。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhash field1 10 field2 var1命令。

命令示例:

 EXHMGETWITHVER myhash field1 field2

返回示例:

1) 1) "10"
   2) (integer) 1
2) 1) "var1"
   2) (integer) 1

EXHLEN

类别

说明

语法

EXHLEN key [NOEXP]

时间复杂度

未设置NOEXP选项时是O(1),设置NOEXP选项时是O(N)。

命令描述

获取key指定的TairHash中field个数,该命令不会触发对过期field的被动淘汰,也不会将其过滤掉,所以结果中可能包含已经过期但还未被删除的field。如果只想返回当前没有过期的field个数,可以在命令中设置NOEXP选项。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • NOEXP:该命令默认不会触发对过期field的被动淘汰,也不会将其过滤掉,所以结果中可能包含已经过期但还未被删除的field。如果只想返回当前没有过期的field个数,可以在命令中设置NOEXP选项。在设置NOEXP时:

    • 因为要遍历整条TairHash数据,EXHLEN命令的响应时间将受到Tairhash大小的影响。

    • EXHLEN命令的返回结果中会过滤掉过期的field,但过期field不会被淘汰。

返回值

  • key不存在或者field不存在:0。

  • 成功:field个数。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHLEN myhash

返回示例:

(integer) 2

EXHEXISTS

类别

说明

语法

EXHEXISTS key field

时间复杂度

O(1)

命令描述

查询key指定的TairHash中是否存在对应的field。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key不存在或者field不存在:0。

  • field存在:1。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHEXISTS myhash field1

返回示例:

(integer) 1

EXHSTRLEN

类别

说明

语法

EXHSTRLEN key field

时间复杂度

O(1)

命令描述

获取key指定的TairHash中一个field对应的value的长度。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key不存在或者field不存在:0。

  • 查询成功:value的长度。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHSTRLEN myhash field1

返回示例:

(integer) 2

EXHKEYS

类别

说明

语法

EXHKEYS key

时间复杂度

O(N)

命令描述

获取key指定的TairHash中所有的field。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

返回值

  • key不存在:返回一个空数组。

  • key存在:返回一个数组,数组的每一位对应TairHash中的每一个field。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhash field1 10 field2 var1命令。

命令示例:

EXHKEYS myhash

返回示例:

1) "field1"
2) "field2"

EXHVALS

类别

说明

语法

EXHVALS key

时间复杂度

O(N)

命令描述

获取key指定的TairHash中所有field的值。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

返回值

  • key不存在:返回一个空数组。

  • key存在:返回一个数组,数组的每个元素对应TairHash中的一个field的value。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhash field1 10 field2 var1命令。

命令示例:

EXHVALS myhash

返回示例:

1) "10"
2) "var1"

EXHGETALL

类别

说明

语法

EXHGETALL key

时间复杂度

O(N)

命令描述

获取key指定的TairHash中所有field及其value。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

返回值

  • key不存在:返回一个空数组。

  • key存在:返回一个数组,数组的每个元素对应TairHash中的一对field和value。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhash field1 10 field2 var1命令。

命令示例:

EXHGETALL myhash

返回示例:

1) "field1"
2) "10"
3) "field2"
4) "var1"

EXHSCAN

类别

说明

语法

EXHSCAN key op subkey [MATCH pattern] [COUNT count]

时间复杂度

每次调用时是O(1),遍历整个TairHash时是O(N)。

命令描述

扫描Key指定的TairHash。

说明

仅内存型实例支持该命令。

选项

  • key:TairHash的Key,用于指定作为命令调用对象的TairHash。

  • op:用于定位扫描的起点,可选值如下。

    • >:表示从第一个大于subkey的field开始。

    • >=:表示从第一个大于等于subkey的field开始。

    • <:表示从第一个小于subkey的field开始。

    • <=:表示从第一个小于等于subkey的field开始。

    • ==:表示从第一个等于subkey的field开始。

    • ^:表示从第一个field开始。

    • $:表示从最后一个field开始。

  • subkey:用于与op选项搭配,设置扫描起始位置,当op为^或$时该值将被忽略。

  • MATCH:用于过滤扫描结果,根据MATCH指定的pattern对subkey进行正则过滤。

  • COUNT:用于规定单次扫描field的个数(默认为10)。

    说明

    COUNT仅表示每次扫描TairHash的field的个数,不代表最终一定会返回COUNT个field结果集,结果集的大小还要根据TairHash中当前field个数和是否指定MATCH进行过滤而定。

返回值

  • Key不存在:返回一个空数组。

  • Key存在:返回一个具有两个元素的数组:

    • 第一个元素:下一次扫描的起始field,如果该Key已扫描完成,则该元素为空。

    • 第二个元素:本次扫描结果,包含field和value。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhashkey field1 val1 field2 val2 field3 val3 field4 val4 field5 val5命令。

命令示例:

EXHSCAN myhashkey ^ xx COUNT 3

返回示例:

1) "field4"
2) 1) "field1"
   2) "val1"
   3) "field2"
   4) "val2"
   5) "field3"
   6) "val3"

EXHSCANUNORDER

类别

说明

语法

EXHSCANUNORDER key cursor [MATCH pattern] [COUNT count]

时间复杂度

每次调用时是O(1),遍历整个TairHash时是O(N)。

命令描述

扫描Key指定的TairHash。

说明

仅持久内存型实例支持该命令。

选项

  • key:TairHash的Key,用于指定作为命令调用对象的TairHash。

  • cursor:指定本次扫描的游标

  • MATCH:用于过滤扫描结果,根据MATCH指定的pattern对待扫描的Key进行正则过滤。

  • COUNT:用于规定单次扫描field的个数(默认为10)。

    说明

    COUNT仅表示每次扫描TairHash的field的个数,不代表最终一定会返回COUNT个field结果集,结果集的大小还要根据TairHash中当前field个数和是否指定MATCH进行过滤而定。

返回值

  • Key不存在:返回一个空数组。

  • Key存在:返回一个具有两个元素的数组:

    • 第一个元素:下次查询的cursor,若该Key已扫描完成,则返回0。

    • 第二个元素:本次扫描结果,包含field和value。

  • 其它情况返回相应的异常信息。

示例

提前执行EXHMSET myhashkey field1 val1 field2 val2 field3 val3 field4 val4 field5 val5命令。

命令示例:

EXHSCANUNORDER myhashkey 0 COUNT 3

返回示例:

1) "1"
2) 1) "field5"
   2) "val5"
   3) "field2"
   4) "val2"

EXHDEL

类别

说明

语法

EXHDEL key field [field ...]

时间复杂度

O(1)

命令描述

删除key指定的TairHash中的一个field,如果TairHash不存在或者field不存在则返回0 ,成功删除返回1。

选项

  • Key:TairHash的key,用于指定作为命令调用对象的TairHash。

  • field:TairHash中的一个元素,一个TairHash key可以有多个field。

返回值

  • key不存在或者field不存在:0。

  • 删除成功:1。

  • 其它情况返回相应的异常信息。

示例

命令示例:

EXHDEL myhash field1

返回示例:

(integer) 1