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实例中的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已经存在则覆盖其值。 说明
|
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHGET
类别 | 说明 |
---|---|
语法 | EXHGET key field |
时间复杂度 | O(1) |
命令描述 | 获取key指定的TairHash中一个field的值,如果TairHash不存在或者field不存在,则返回nil。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHMSET
类别 | 说明 |
---|---|
语法 | EXHMSET key field value [field value ...] |
时间复杂度 | O(N) |
命令描述 | 同时向key指定的TairHash中插入多个field,如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。 说明 创建Key后,您可以通过EXHPEXPIREAT、EXHPEXPIRE、EXHEXPIREAT或EXHEXPIRE命令设置field的过期时间,您也可以通过EXPIRE或EXPIREAT命令设置Key的过期时间。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHPEXPIREAT
类别 | 说明 |
---|---|
语法 | EXHPEXPIREAT key field milliseconds-timestamp [VER | ABS version] |
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置绝对过期时间,精确到毫秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHPEXPIRE
类别 | 说明 |
---|---|
语法 | EXHPEXPIRE key field milliseconds [VER | ABS version] |
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置相对过期时间,单位为毫秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHEXPIREAT
类别 | 说明 |
---|---|
语法 | EXHEXPIREAT key field timestamp [VER | ABS version] |
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置绝对过期时间,精确到秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHEXPIRE
类别 | 说明 |
---|---|
语法 | EXHEXPIRE key field seconds [VER | ABS version] |
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置相对过期时间,单位为秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHPTTL
类别 | 说明 |
---|---|
语法 | EXHPTTL key field |
时间复杂度 | O(1) |
命令描述 | 查看key指定的TairHash中一个field的剩余过期时间,结果精确到毫秒。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHTTL
类别 | 说明 |
---|---|
语法 | EXHTTL key field |
时间复杂度 | O(1) |
命令描述 | 查看key指定的TairHash中一个field的过期时间,结果精确到秒。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHVER
类别 | 说明 |
---|---|
语法 | EXHVER key field |
时间复杂度 | O(1) |
命令描述 | 查看key指定的TairHash中一个field的当前版本号。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHSETVER
类别 | 说明 |
---|---|
语法 | EXHSETVER key field version |
时间复杂度 | O(1) |
命令描述 | 设置key指定的TairHash中一个field的版本号。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
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将被设置为永不过期。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
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将被设置为永不过期。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHGETWITHVER
类别 | 说明 |
---|---|
语法 | EXHGETWITHVER key field |
时间复杂度 | O(1) |
命令描述 | 同时获取key指定的TairHash一个field的值和版本,如果TairHash不存在或者field不存在,则返回nil。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHMGET
类别 | 说明 |
---|---|
语法 | EXHMGET key field [field ...] |
时间复杂度 | O(1) |
命令描述 | 同时获取key指定的TairHash多个field的值,如果TairHash不存在或者field不存在,则返回nil。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHMGETWITHVER
类别 | 说明 |
---|---|
语法 | EXHMGETWITHVER key field [field ...] |
时间复杂度 | O(1) |
命令描述 | 同时获取key指定的TairHash多个field的值和版本。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHLEN
类别 | 说明 |
---|---|
语法 | EXHLEN key [NOEXP] |
时间复杂度 | 未设置NOEXP选项时是O(1),设置NOEXP选项时是O(N)。 |
命令描述 | 获取key指定的TairHash中field个数,该命令不会触发对过期field的被动淘汰,也不会将其过滤掉,所以结果中可能包含已经过期但还未被删除的field。如果只想返回当前没有过期的field个数,可以在命令中设置NOEXP选项。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHEXISTS
类别 | 说明 |
---|---|
语法 | EXHEXISTS key field |
时间复杂度 | O(1) |
命令描述 | 查询key指定的TairHash中是否存在对应的field。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHSTRLEN
类别 | 说明 |
---|---|
语法 | EXHSTRLEN key field |
时间复杂度 | O(1) |
命令描述 | 获取key指定的TairHash中一个field对应的value的长度。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHKEYS
类别 | 说明 |
---|---|
语法 | EXHKEYS key |
时间复杂度 | O(N) |
命令描述 | 获取key指定的TairHash中所有的field。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHVALS
类别 | 说明 |
---|---|
语法 | EXHVALS key |
时间复杂度 | O(N) |
命令描述 | 获取key指定的TairHash中所有field的值。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHGETALL
类别 | 说明 |
---|---|
语法 | EXHGETALL key |
时间复杂度 | O(N) |
命令描述 | 获取key指定的TairHash中所有field及其value。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHSCAN
类别 | 说明 |
---|---|
语法 | EXHSCAN key op subkey [MATCH pattern] [COUNT count] |
时间复杂度 | 每次调用时是O(1),遍历整个TairHash时是O(N)。 |
命令描述 | 扫描Key指定的TairHash。 说明 仅内存型实例支持该命令。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHSCANUNORDER
类别 | 说明 |
---|---|
语法 | EXHSCANUNORDER key cursor [MATCH pattern] [COUNT count] |
时间复杂度 | 每次调用时是O(1),遍历整个TairHash时是O(N)。 |
命令描述 | 扫描Key指定的TairHash。 说明 仅持久内存型实例支持该命令。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHDEL
类别 | 说明 |
---|---|
语法 | EXHDEL key field [field ...] |
时间复杂度 | O(1) |
命令描述 | 删除key指定的TairHash中的一个field,如果TairHash不存在或者field不存在则返回0 ,成功删除返回1。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|