ExTimeSeries 扩展模块 | 说明 |
Pkey | 一个 Pkey 就是一组时间线,每个 Pkey 中可包含多个 Skey。 |
Skey | 一个 Skey 就是一条时间线,每个 Skey 中可包含多个固定容量的 chunk。 缓存数据库 Redis 版支持为每个 Skey 设置不同的标签(Label),用于在海量数据中快速过滤出目标 Skey。 |
Chunk | 时序数据的数据块,单个 CHUNK_SIZE size 默认为 256。
|
Datapoint | 时序数据的数据点,其中包含了一个时间戳和一个 value 数据(Double 类型)。 |
命令 | 语法 | 说明 |
EXTS.PCREATE Pkey | 创建一个新 Pkey(ExTimeSeries),若 Pkey 已存在则创建失败。 | |
EXTS.CREATE Pkey Skey [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 label2 val2 ...] | 在指定的 Pkey 中创建一个 Skey,若 Pkey 不存在则会自动创建一个新 Pkey,若 Skey 已经存在则创建失败。 您可以在创建时为 SKey 设置过期时间、是否开启压缩、标签等属性。 | |
EXTS.ALTER Pkey Skey [RETENTION time] | 修改指定 Pkey 中目标 Skey 的属性,当前仅支持修改过期时间(即 RETENTION time)。 | |
EXTS.ADD Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] | 为指定 Pkey 中的目标 Skey 插入一条 Datapoint 数据。若 Pkey 或 Skey 不存在则会自动创建,Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 | |
EXTS.MODIFY Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] | 修改目标 Skey 中指定时间点的 Datapoint 数据值。若 Pkey 或 Skey 不存在则会自动创建,Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 | |
EXTS.INCRBY Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] | 为指定 Pkey 中的目标 Skey 插入一条 Datapoint 数据,并将该命令中的 value 与目标 Skey 中时间最近的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 若 Pkey 或 Skey 不存在则会自动创建,新建 Skey 中 Datapoint 的 value 初始值默认为 0。 Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 | |
EXTS.INCRBY_TS Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] | 将该命令中的 value 与目标 Skey 中指定时间点的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 若 Pkey 或 Skey 不存在则会自动创建,新建 Skey 中 Datapoint 的 value 初始值默认为 0。 Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 | |
EXTS.MADD Pkey Skey timestamp value [Skey timestamp value ...] | 为指定 Pkey 中的多个 Skey 分别插入一条 Datapoint 数据。 说明 Skey 必须存在,否则命令执行时会报错。 | |
EXTS.MMODIFY Pkey Skey timestamp value [Skey timestamp value ...] | 批量修改多个 Skey 中在指定时间点的 Datapoint 数据值。 说明 Skey 必须存在,否则命令执行时会报错。 | |
EXTS.MINCRBY Pkey Skey timestamp value [Skey timestamp value ...] | 为指定 Pkey 中的多个 Skey 分别插入一条 Datapoint 数据,并将该命令中的 value 与各个 Skey 中时间最近的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 说明 Skey 必须存在,否则命令执行时会报错。 | |
EXTS.MINCRBY_TS Pkey Skey timestamp value [Skey timestamp value ...] | 批量修改多个目标 Skey 中 Datapoint 的 value。该命令中的 value 会与目标 Skey 中指定时间点的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 说明 Skey 必须存在,否则命令执行时会报错。 | |
EXTS.DEL Pkey Skey | 删除指定 Pkey 中的目标 Skey,包括该 Skey 中所有的 Datapoint 数据。 说明 当 Pkey 中不存在任何 Skey 时,该 Pkey 会被自动删除。 |
命令 | 语法 | 说明 |
EXTS.GET Pkey Skey | 查询指定 Pkey 的目标 Skey 中,时间最近的一条 Datapoint 数据。 | |
EXTS.INFO Pkey Skey | 查询指定 Pkey 中目标 Skey 的属性信息,包括 Datapoint 数量、最近一条 Datapoint 的时间戳与 value、Skey 的标签等信息。 | |
EXTS.QUERYINDEX Pkey filter1 [filter2 ...] | 从指定 Pkey 中查询出符合自定义过滤条件(filter)的 Skey。 | |
EXTS.RANGE Pkey Skey fromTimestamp toTimestamp [COUNT count] [AGGREGATION aggregationType timeBucket] | 在目标 Skey 中查询指定时间段内(即包含指定时间点)的 Datapoint 数据。 | |
EXTS.MRANGE Pkey fromTimestamp toTimestamp [COUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...] | 在目标 Pkey 中查询指定时间段内(即包含指定时间点),符合符合自定义过滤条件(filter)的 Skey 信息详情,包括 Skey 名称、包含的标签、 Datapoint 数据。 | |
EXTS.PRANGE Pkey fromTimestamp toTimestamp pkeyAggregationType pkeyTimeBucket [COUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...] | 在目标 Pkey 中对指定时间段内,符合自定义过滤条件(filter)的 Datapoint 数据进行 Pkey 层级的聚合。 |
命令 | 语法 | 说明 |
EXPIRE Pkey seconds [NX | XX | GT | LT] | 设置 ExTimeSeries 的超时时间,超过该时间的 ExTimeSeries 会被自动删除。 | |
UNLINK Pkey [Pkey ...] | 异步删除一个或多个 ExTimeSeries。当通过 UNLINK 命令删除 ExTimeSeries 时,这些 ExTimeSeries 会被标记为待删除状态,而真正的删除操作会放在后台线程中进行,不会阻塞 Redis 的当前进程。 | |
DEL | DEL Pkey [Pkey ...] | 同步删除一个或多个 ExTimeSeries。当通过 DEL 命令删除 ExTimeSeries 时,删除操作会立即阻塞 Redis 当前线程,直到这些 ExTimeSeries 对应的内存空间被完全回收释放。如果待删除的 ExTimeSeries 数据量过大,可能会影响 Redis 整体性能。 |
类别 | 说明 |
命令语法 | EXTS.PCREATE Pkey |
时间复杂度 | O(1)。 |
命令描述 | 创建一个新 Pkey(ExTimeSeries),若 Pkey 已存在则创建失败。 |
选项 | Pkey:Pkey 名称,用于指定作为命令调用对象的 ExTimeSeries。 |
返回值 |
|
示例 | 创建一个 Pkey 名称为 test_exts 的 ExTimeSeries。 EXTS.PCREATE test_exts 返回示例。 OK |
类别 | 说明 |
命令语法 | EXTS.CREATE Pkey Skey [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 label2 val2 ...] |
时间复杂度 | O(1)。 |
命令描述 | 在指定的 Pkey 中创建一个 Skey,若 Pkey 不存在则会自动创建一个新 Pkey,若 Skey 已经存在则创建失败。 您可以在创建时为 SKey 设置过期时间、是否开启压缩、标签等属性。 |
选项 |
说明
|
返回值 |
|
示例 |
|
类别 | 说明 |
命令语法 | EXTS.ALTER Pkey Skey [RETENTION time] |
时间复杂度 | O(1)。 |
命令描述 | 修改指定 Pkey 中目标 Skey 的属性,当前仅支持修改过期时间(即 RETENTION time)。 |
选项 |
说明
|
返回值 |
|
示例 | 将 test_exts 中名为 volume 的 Skey 过期时间改为 15,000,000。 EXTS.ALTER test_exts volume RETENTION 15000000 返回示例。 OK |
类别 | 说明 |
命令语法 | EXTS.ADD Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] |
时间复杂度 | O(1)。 |
命令描述 | 为指定 Pkey 中的目标 Skey 插入一条 Datapoint 数据。若 Pkey 或 Skey 不存在则会自动创建,Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 |
选项 |
说明
|
返回值 |
|
示例 | 为已存在的 Pkey 名称为 test_exts 的 ExTimeSeries 创建一个名称为 issuer 的 Skey ,并为该 Skey 插入一条值为 66.0,时间戳为系统当前时间戳的 Datapoint 数据。创建 Skey 的同时为其设置相对过期时间为 10,000,000 毫秒,包含 stockid A 标签。 EXTS.ADD test_exts issuer * 66.0 RETENTION 10000000 LABELS stockid A 返回示例。 OK |
类别 | 说明 |
命令语法 | EXTS.MODIFY Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] |
时间复杂度 | O(1)。 |
命令描述 | 修改目标 Skey 中指定时间点的 Datapoint 数据值。若 Pkey 或 Skey 不存在则会自动创建,Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 |
选项 |
说明
|
返回值 |
|
示例 | 将 test_exts 中 Skey closing_price 在指定时间点的 Datapoint 数据值改为 89.0。 EXTS.MODIFY test_exts closing_price 1744255211538 89.0 返回示例。 OK |
类别 | 说明 |
命令语法 | EXTS.INCRBY Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] |
时间复杂度 | O(1)。 |
命令描述 | 为指定 Pkey 中的目标 Skey 插入一条 Datapoint 数据,并将该命令中的 value 与目标 Skey 中时间最近的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 若 Pkey 或 Skey 不存在则会自动创建,新建 Skey 中 Datapoint 的 value 初始值默认为 0。 Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 |
选项 |
说明
|
返回值 |
|
示例 | 例如,Pkey test_exts 中 Skey closing_price 的最近一条 Datapoint 值为 8.0,您可以通过如下命令为该 Skey 的 value 实现递增。 EXTS.INCRBY test_exts closing_price * 3 返回示例。 OK 若此时执行 EXTS.GET test_exts closing_price 命令,将会返回如下结果。 1) (integer) 1744254273078 2) "11" |
类别 | 说明 |
命令语法 | EXTS.INCRBY_TS Pkey Skey timestamp value [RETENTION time] [CHUNK_SIZE size] [ENCODING <COMPRESSED|UNCOMPRESSED>] [LABELS label1 val1 ...] |
时间复杂度 | O(1)。 |
命令描述 | 将该命令中的 value 与目标 Skey 中指定时间点的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 若 Pkey 或 Skey 不存在则会自动创建,新建 Skey 中 Datapoint 的 value 初始值默认为 0。 Skey 的过期时间、是否开启压缩、标签等属性仅在需要自动创建 Skey 的情况下生效。 |
选项 |
说明
|
返回值 |
|
示例 | 例如,Pkey test_exts 中 Skey closing_price 在指定时间点的 Datapoint 值为 70.0,您可以通过如下命令为该 Skey 的 value 实现递减。 EXTS.INCRBY_TS test_exts closing_price 1744254890238 -30.0 返回示例。 OK 若此时执行 EXTS.GET test_exts closing_price 命令,将会返回如下结果。 1) (integer) 1744254890238 2) "40" |
类别 | 说明 |
命令语法 | EXTS.MADD Pkey Skey timestamp value [Skey timestamp value ...] |
时间复杂度 | O(N),其中 N 为需要插入的 Datapoint 数量。 |
命令描述 | 为指定 Pkey 中的多个 Skey 分别插入一条 Datapoint 数据。 说明 Skey 必须存在,否则命令执行时会报错。 |
选项 |
|
返回值 |
|
示例 | 为 Pkey test_exts 中的 volume 和 closing_price Skey 分别插入一条 Datapoint 数据。 EXTS.MADD test_exts volume * 66.0 closing_price * 8.0 返回示例。 1) OK 2) OK |
类别 | 说明 |
命令语法 | EXTS.MMODIFY Pkey Skey timestamp value [Skey timestamp value ...] |
时间复杂度 | O(N),其中 N 为需要插入的 Datapoint 数量。 |
命令描述 | 批量修改多个 Skey 中在指定时间点的 Datapoint 数据值。 说明 Skey 必须存在,否则命令执行时会报错。 |
选项 |
|
返回值 |
|
示例 | 将 test_exts 中 closing_price、volume 这两个 Skey 的 Datapoint 数据值分别改为 56.0 和 70.0。 EXTS.MMODIFY test_exts closing_price 1744255211538 56.0 volume 1744254890238 70.0 返回示例。 1) OK 2) OK |
类别 | 说明 |
命令语法 | EXTS.MINCRBY Pkey Skey timestamp value [Skey timestamp value ...] |
时间复杂度 | O(N),其中 N 为需要插入的 Datapoint 数量。 |
命令描述 | 为指定 Pkey 中的多个 Skey 分别插入一条 Datapoint 数据,并将该命令中的 value 与各个 Skey 中时间最近的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 说明 Skey 必须存在,否则命令执行时会报错。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 EXTS.MINCRBY test_exts closing_price * -3.0 volume * 4.0 返回示例。 1) OK 2) OK |
类别 | 说明 |
命令语法 | EXTS.MINCRBY_TS Pkey Skey timestamp value [Skey timestamp value ...] |
时间复杂度 | O(1)。 |
命令描述 | 批量修改多个目标 Skey 中 Datapoint 的 value。该命令中的 value 会与目标 Skey 中指定时间点的 Datapoint 所设 value 值相加实现递增。若您将命令中的 value 值指定为负数则实现递减。 说明 Skey 必须存在,否则命令执行时会报错。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 EXTS.MINCRBY_TS test_exts closing_price 1744257305364 -25.0 volume 1744254890238 62.0 返回示例。 1) OK 2) OK |
类别 | 说明 |
命令语法 | EXTS.DEL Pkey Skey |
时间复杂度 | O(1)。 |
命令描述 | 删除指定 Pkey 中的目标 Skey,包括该 Skey 中所有的 Datapoint 数据。 说明 当 Pkey 中不存在任何 Skey 时,该 Pkey 会被自动删除。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 EXTS.DEL test_exts closing_price 返回示例。 OK |
类别 | 说明 |
命令语法 | EXTS.GET Pkey Skey |
时间复杂度 | O(1)。 |
命令描述 | 查询指定 Pkey 的目标 Skey 中,时间最近的一条 Datapoint 数据。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 EXTS.GET test_exts closing_price 返回示例。 1) (integer) 1744254402895 2) "8" |
类别 | 说明 |
命令语法 | EXTS.INFO Pkey Skey |
时间复杂度 | O(1)。 |
命令描述 | 查询指定 Pkey 中目标 Skey 的属性信息,包括 Datapoint 数量、最近一条 Datapoint 的时间戳与 value、Skey 的标签等信息。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 EXTS.INFO test_exts closing_price 返回示例。 1) totalDataPoints 2) (integer) 4 3) maxDataPoints 4) (integer) 0 5) maxDataPointsPerChunk 6) (integer) 256 7) dataPointsExpireTime 8) (integer) 0 9) lastTimestamp 10) (integer) 1744254402895 11) chunkCount 12) (integer) 1 13) lastValue 14) (integer) 8 15) labels 16) 1) 1) "stockid" 2) "A" 2) 1) "issuer" 2) "1" 说明 返回结果的参数说明如下:
|
类别 | 说明 |
命令语法 | EXTS.QUERYINDEX Pkey filter1 [filter2 ...] |
时间复杂度 | O(N),其中 N 为符合过滤条件的最大集合数。 |
命令描述 | 从指定 Pkey 中查询出符合自定义过滤条件(filter)的 Skey。 |
选项 |
|
返回值 |
|
示例 |
|
类别 | 说明 |
命令语法 | EXTS.RANGE Pkey Skey fromTimestamp toTimestamp [COUNT count] [AGGREGATION aggregationType timeBucket] |
时间复杂度 | O(N),其中 N 为目标 Datapoint 的数据块个数。 |
命令描述 | 在目标 Skey 中查询指定时间段内(即包含指定时间点)的 Datapoint 数据。 |
选项 |
|
返回值 |
|
示例 | 从 Pkey test_exts 的 Skey closing_price 中查询出指定时间段内每 3,000 毫秒的最大值,且最多允许返回 2 条数据。 EXTS.RANGE test_exts closing_price 1743566159000 * COUNT 2 AGGREGATION MAX 3000 返回示例。 1) 1) 1) (integer) 1744255152000 2) "73" 2) 1) (integer) 1744255167000 2) "76" 2) (integer) 1 说明 返回结果中的最后一行信息可用于判断是否已展示了符合条件的全部 Datapoint 数据。其中:
|
类别 | 说明 |
命令语法 | EXTS.MRANGE Pkey fromTimestamp toTimestamp [COUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...] |
时间复杂度 | O(N),其中 N 为目标 Datapoint 的数据块个数。 |
命令描述 | 在目标 Pkey 中查询指定时间段内(即包含指定时间点),符合符合自定义过滤条件(filter)的 Skey 信息详情,包括 Skey 名称、包含的标签、 Datapoint 数据。 |
选项 |
|
返回值 |
|
示例 |
说明 返回结果中每个 Skey 列表的最后一行信息可用于判断是否已展示了符合条件的全部 Datapoint 数据。其中:
|
类别 | 说明 |
命令语法 | EXTS.PRANGE Pkey fromTimestamp toTimestamp pkeyAggregationType pkeyTimeBucket [COUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...] |
时间复杂度 | O(N),其中 N 为目标 Datapoint 的数据块个数。 |
命令描述 | 在目标 Pkey 中对指定时间段内,符合自定义过滤条件(filter)的 Datapoint 数据进行 Pkey 层级的聚合。 |
选项 |
|
返回值 |
|
示例 | 在 Pkey test_exts 中,对指定时间段内的 Datapoint 数据进行如下聚合操作:
EXTS.PRANGE test_exts 1743566159000 * SUM 5000 COUNT 2 AGGREGATION SUM 3000 FILTER stockid=B 返回示例。 1) 1) 1) (integer) 1744254905000 2) "214" 2) 1) (integer) 1744255150000 2) "73" 2) (integer) 1 说明 |
条件逻辑 | filter 命令语法 | 语法说明 |
EQ(equals) | L=V | 从标签 L 中筛选出标签值为 V 的 Skey。 |
CONTAINS | L!= | 从标签 L 中筛选出标签值不为 NULL 的 Skey,即所有包含标签 L 的 Skey。 |
LIST_TMATCH | L=(V1,V2,...) | 从标签 L 中筛选出标签值为 V1、V2 等的Skey。 |
NOEQ(equals) | L!=V | 从标签 L 中筛选出标签值不为 V 的 Skey。 |
NOCONTAINS | L= | 从标签 L 中筛选出标签值为 NULL 的 Skey,即所有不包含标签 L 的 Skey。 |
LIST_NOTMATCH | L!=(V1,V2,...) | 从标签 L 中筛选出标签值不为 V1、V2 等的 Skey。 |
聚合语法 | 语法说明 |
MAX | 最大值。 |
MIN | 最小值。 |
AVG | 平均值。 |
SUM | 求和。 |
FIRST | 第一个值。 |
LAST | 最后一个值。 |
RANGE | 范围(最大值 ~ 最小值)。 |
COUNT | value 数量。 |
STD.P | 总体方差。 |
STD.S | 样本方差。 |
VAR.P | 总体标准差。 |
VAR.S | 样本标准差。 |