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数据。
命令列表
表 1. TairHash命令
命令 | 语法 | 说明 |
| 向Key指定的TairHash中插入一个field。如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。 | |
| 获取key指定的TairHash中一个field的值,如果TairHash不存在或者field不存在,则返回nil。 | |
| 同时向key指定的TairHash中插入多个field,如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。 | |
| 在key指定的TairHash中为一个field设置绝对过期时间,精确到毫秒。 | |
| 在key指定的TairHash中为一个field设置相对过期时间,单位为毫秒。 | |
| 在key指定的TairHash中为一个field设置绝对过期时间,精确到秒。 | |
| 在key指定的TairHash中为一个field设置相对过期时间,单位为秒。 | |
| 查看key指定的TairHash中一个field的剩余过期时间,结果精确到毫秒。 | |
| 查看key指定的TairHash中一个field的过期时间,结果精确到秒。 | |
| 查看key指定的TairHash中一个field的当前版本号。 | |
| 设置key指定的TairHash中一个field的版本号。 | |
| 将key指定的TairHash中一个field的value增加num,num为一个整数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。 说明 为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。 | |
| 将key指定的TairHash中一个field的value增加num,num为一个浮点数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。 说明 为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。 | |
| 同时获取key指定的TairHash一个field的值和版本,如果TairHash不存在或者field不存在,则返回nil。 | |
| 同时获取key指定的TairHash多个field的值,如果TairHash不存在或者field不存在,则返回nil。 | |
| 同时获取key指定的TairHash多个field的值和版本。 | |
| 获取key指定的TairHash中field个数,该命令不会触发对过期field的被动淘汰,也不会将其过滤掉,所以结果中可能包含已经过期但还未被删除的field。如果只想返回当前没有过期的field个数,可以在命令中设置NOEXP选项。 | |
| 查询key指定的TairHash中是否存在对应的field。 | |
| 获取key指定的TairHash中一个field对应的value的长度。 | |
| 获取key指定的TairHash中所有的field。 | |
| 获取key指定的TairHash中所有field的值。 | |
| 获取key指定的TairHash中所有field及其value。 | |
| 扫描Key指定的TairHash。 说明 仅内存型实例支持该命令。 | |
| 扫描Key指定的TairHash。 说明 仅持久内存型实例支持该命令。 | |
| 删除key指定的TairHash中的一个field,如果TairHash不存在或者field不存在则返回0 ,成功删除返回1。 | |
| 使用原生Redis的DEL命令可以删除一条或多条TairHash数据。 |
本文的命令语法定义如下:
大写关键字
:命令关键字。斜体
:变量。[options]
:可选参数,不在括号中的参数为必选。A|B
:该组参数互斥,请进行二选一或多选一。...
:前面的内容可重复。
EXHSET
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 向Key指定的TairHash中插入一个field。如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。 说明
|
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHGET
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 获取key指定的TairHash中一个field的值,如果TairHash不存在或者field不存在,则返回nil。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHMSET
类别 | 说明 |
语法 |
|
时间复杂度 | O(N) |
命令描述 | 同时向key指定的TairHash中插入多个field,如果TairHash不存在则自动创建一个,如果field已经存在则覆盖其值。 说明 创建Key后,您可以通过EXHPEXPIREAT、EXHPEXPIRE、EXHEXPIREAT或EXHEXPIRE命令设置field的过期时间,您也可以通过EXPIRE或EXPIREAT命令设置Key的过期时间。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHPEXPIREAT
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置绝对过期时间,精确到毫秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHPEXPIRE
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置相对过期时间,单位为毫秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHEXPIREAT
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置绝对过期时间,精确到秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHEXPIRE
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 在key指定的TairHash中为一个field设置相对过期时间,单位为秒。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHPTTL
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 查看key指定的TairHash中一个field的剩余过期时间,结果精确到毫秒。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHTTL
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 查看key指定的TairHash中一个field的过期时间,结果精确到秒。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHVER
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 查看key指定的TairHash中一个field的当前版本号。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHSETVER
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 设置key指定的TairHash中一个field的版本号。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHINCRBY
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 将key指定的TairHash中一个field的value增加num,num为一个整数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。 说明 为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHINCRBYFLOAT
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 将key指定的TairHash中一个field的value增加num,num为一个浮点数。如果TairHash不存在则自动新创建一个,如果指定的field不存在,则在加之前插入该field并将其值设置为0。 说明 为Key的field设置了超时时间后,再次执行该命令时如果没有设置超时时间,该field将被设置为永不过期。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHGETWITHVER
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 同时获取key指定的TairHash一个field的值和版本,如果TairHash不存在或者field不存在,则返回nil。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHMGET
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 同时获取key指定的TairHash多个field的值,如果TairHash不存在或者field不存在,则返回nil。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHMGETWITHVER
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 同时获取key指定的TairHash多个field的值和版本。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHLEN
类别 | 说明 |
语法 |
|
时间复杂度 | 未设置NOEXP选项时是O(1),设置NOEXP选项时是O(N)。 |
命令描述 | 获取key指定的TairHash中field个数,该命令不会触发对过期field的被动淘汰,也不会将其过滤掉,所以结果中可能包含已经过期但还未被删除的field。如果只想返回当前没有过期的field个数,可以在命令中设置NOEXP选项。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHEXISTS
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 查询key指定的TairHash中是否存在对应的field。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHSTRLEN
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 获取key指定的TairHash中一个field对应的value的长度。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|
EXHKEYS
类别 | 说明 |
语法 |
|
时间复杂度 | O(N) |
命令描述 | 获取key指定的TairHash中所有的field。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHVALS
类别 | 说明 |
语法 |
|
时间复杂度 | O(N) |
命令描述 | 获取key指定的TairHash中所有field的值。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHGETALL
类别 | 说明 |
语法 |
|
时间复杂度 | O(N) |
命令描述 | 获取key指定的TairHash中所有field及其value。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHSCAN
类别 | 说明 |
语法 |
|
时间复杂度 | 每次调用时是O(1),遍历整个TairHash时是O(N)。 |
命令描述 | 扫描Key指定的TairHash。 说明 仅内存型实例支持该命令。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHSCANUNORDER
类别 | 说明 |
语法 |
|
时间复杂度 | 每次调用时是O(1),遍历整个TairHash时是O(N)。 |
命令描述 | 扫描Key指定的TairHash。 说明 仅持久内存型实例支持该命令。 |
选项 |
|
返回值 |
|
示例 | 提前执行 命令示例:
返回示例:
|
EXHDEL
类别 | 说明 |
语法 |
|
时间复杂度 | O(1) |
命令描述 | 删除key指定的TairHash中的一个field,如果TairHash不存在或者field不存在则返回0 ,成功删除返回1。 |
选项 |
|
返回值 |
|
示例 | 命令示例:
返回示例:
|