TS.CREATERULE sourceKey destKey AGGREGATION aggregator bucketDuration [alignTimestamp]
@timeseries,
@write,
@fast,
Create a compaction rule
sourceKeyis key name for the source time series.
destKeyis key name for destination (compacted) time series. It must be created before TS.CREATERULE is called.
AGGREGATION aggregator bucketDurationaggregates results into time buckets.
aggregator takes one of the following aggregation types:
aggregator |
Description |
|---|---|
avg |
Arithmetic mean of all values |
sum |
Sum of all values |
min |
Minimum value |
max |
Maximum value |
range |
Difference between the highest and the lowest value |
count |
Number of values |
first |
Value with lowest timestamp in the bucket |
last |
Value with highest timestamp in the bucket |
std.p |
Population standard deviation of the values |
std.s |
Sample standard deviation of the values |
var.p |
Population variance of the values |
var.s |
Sample variance of the values |
twa |
Time-weighted average over the bucket's timeframe (since RedisTimeSeries v1.8) |
bucketDuration is duration of each bucket, in milliseconds.
TS.CREATERULE with a nonempty destKey may result in inconsistencies between the raw and the compacted data.TS.ADD, TS.MADD, TS.INCRBY, or TS.DECRBY) may result in inconsistencies between the raw and the compacted data. The compaction process may override such samples.x:00, x:10, x:20, and so on.destKey will cause the compaction rule to be deleted as well.sourceKey and destKey to be stored in the same hash slot. If you don't, Redis may fail to compact the data without displaying any error messages.alignTimestamp (since RedisTimeSeries v1.8)ensures that there is a bucket that starts exactly at alignTimestamp and aligns all other buckets accordingly. It is expressed in milliseconds. The default value is 0: aligned with the Unix epoch.
For example, if bucketDuration is 24 hours (24 * 3600 * 1000), setting alignTimestamp to 6 hours after the Unix epoch (6 * 3600 * 1000) ensures that each bucket’s timeframe is [06:00 .. 06:00).
Create a time series to store the temperatures measured in Tel Aviv.
127.0.0.1:6379> TS.CREATE temp:TLV LABELS type temp location TLV
OKNext, create a compacted time series named dailyAvgTemp containing one compacted sample per 24 hours: the time-weighted average of all measurements taken from midnight to next midnight.
127.0.0.1:6379> TS.CREATE dailyAvgTemp:TLV LABELS type temp location TLV
127.0.0.1:6379> TS.CREATERULE temp:TLV dailyAvgTemp:TLV AGGREGATION twa 86400000 Now, also create a compacted time series named dailyDiffTemp. This time series will contain one compacted sample per 24 hours: the difference between the minimum and the maximum temperature measured between 06:00 and 06:00 next day. Here, 86400000 is the number of milliseconds in 24 hours, 21600000 is the number of milliseconds in 6 hours.
127.0.0.1:6379> TS.CREATE dailyDiffTemp:TLV LABELS type temp location TLV
127.0.0.1:6379> TS.CREATERULE temp:TLV dailyDiffTemp:TLV AGGREGATION range 86400000 21600000| Redis Enterprise |
Redis Cloud |
Notes |
|---|---|---|
| ✅ Supported |
✅ Flexible & Annual ✅ Free & Fixed |
One of the following:
OK when the compaction rule is created successfully.sourceKey does not exist, destKey does not exist, sourceKey is already a destination of a compaction rule, destKey is already a source or a destination of a compaction rule, or sourceKey and destKey are identical.