TairHash是一种可为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(Redis企业版):
说明 最新小版本将提供更丰富的功能与稳定的服务,建议将实例的小版本升级到最新,具体操作请参见升级小版本。若实例为集群架构读写分离架构,请将代理节点的小版本也升级到最新,避免代理节点无法识别部分命令。

注意事项

操作对象为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已经存在则覆盖其值。
说明 为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该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,该命令会过滤掉已经过期的field,但是为了尽快响应客户端,不会执行真正的删除操作。

EXHVALS EXHVALS key

获取key指定的TairHash中所有field的值,该命令会过滤掉已经过期的field,但是为了尽快响应客户端,不会执行真正的删除操作。

EXHGETALL EXHGETALL key

获取key指定的TairHash中所有field及其value,该命令会过滤掉已经过期的field,但是为了尽快响应客户端,不会执行真正的删除操作。

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将被设置为永不过期。
选项
  • 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: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。
返回值
  • key或者field不存在:-2。
  • field存在但是没有设置过期时间:-1。
  • 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,该命令会过滤掉已经过期的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的值,该命令会过滤掉已经过期的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,该命令会过滤掉已经过期的field,但是为了尽快响应客户端,不会执行真正的删除操作。

选项
  • 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。
说明 仅内存型实例支持该命令。
该命令会过滤掉已经过期的field,但是为了尽快响应客户端,不会执行真正的删除操作。
选项
  • 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。
说明 仅持久内存型实例支持该命令。
该命令会过滤掉已经过期的field,但是为了尽快响应客户端,不会执行真正的删除操作。
选项
  • 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