Skip to content
Switch branches/tags


Failed to load latest commit information.

Release CircleCI Docker Cloud Build Status Language grade: C/C++ codecov


Forum Discord

RedisTimeSeries is a Redis Module adding a Time Series data structure to Redis.


Read more about the v1.0 GA features here.

  • High volume inserts, low latency reads
  • Query by start time and end-time
  • Aggregated queries (Min, Max, Avg, Sum, Range, Count, First, Last, STD.P, STD.S, Var.P, Var.S) for any time bucket
  • Configurable maximum retention period
  • Downsampling/Compaction - automatically updated aggregated timeseries
  • Secondary index - each time series has labels (field value pairs) which will allows to query by labels

Using with other tools metrics tools

In the RedisTimeSeries organization you can find projects that help you integrate RedisTimeSeries with other tools, including:

  1. Prometheus - read/write adapter to use RedisTimeSeries as backend db.
  2. Grafana - using the Redis Data Source.
  3. Telegraph
  4. StatsD, Graphite exports using graphite protocol.

Memory model

A time series is a linked list of memory chunks. Each chunk has a predefined size of samples. Each sample is a tuple of the time and the value of 128 bits, 64 bits for the timestamp and 64 bits for the value.


You can either get RedisTimeSeries setup in a Docker container or on your own machine.


To quickly try out RedisTimeSeries, launch an instance using docker:

docker run -p 6379:6379 -it --rm redislabs/redistimeseries

Build and Run it yourself

You can also build and run RedisTimeSeries on your own machine.

Major Linux distributions as well as macOS are supported.


First, clone the RedisTimeSeries repository from git:

git clone --recursive

Then, to install required build artifacts, invoke the following:

cd RedisTimeSeries
make setup

Or you can install required dependencies manually listed in

If make is not yet available, the following commands are equivalent:


Note that will install various packages on your system using the native package manager and pip. This requires root permissions (i.e. sudo) on Linux.

If you prefer to avoid that, you can:

  • Review and install packages manually,
  • Utilize a Python virtual environment,
  • Use Docker with the --volume option to create an isolated build environment.


make build

Binary artifacts are placed under the bin directory.


In your redis-server run: loadmodule bin/

For more information about modules, go to the redis official documentation.

Give it a try

After you setup RedisTimeSeries, you can interact with it using redis-cli.

Here we'll create a time series representing sensor temperature measurements. After you create the time series, you can send temperature measurements. Then you can query the data for a time range on some aggregation rule.

With redis-cli

$ redis-cli> TS.CREATE temperature:3:11 RETENTION 60 LABELS sensor_id 2 area_id 32
OK> TS.ADD temperature:3:11 1548149181 30
OK> TS.ADD temperature:3:11 1548149191 42
OK>  TS.RANGE temperature:3:11 1548149180 1548149210 AGGREGATION avg 5
1) 1) (integer) 1548149180
   2) "30"
2) 1) (integer) 1548149190
   2) "42"

Client libraries

Some languages have client libraries that provide support for RedisTimeSeries commands:

Project Language License Author Stars
JRedisTimeSeries Java BSD-3 RedisLabs JRedisTimeSeries-stars
redis-modules-java Java Apache-2 dengliming redis-modules-java-stars
redistimeseries-go Go Apache-2 RedisLabs redistimeseries-go-stars
redistimeseries-py Python BSD-3 RedisLabs redistimeseries-py-stars
NRedisTimeSeries .NET BSD-3 RedisLabs NRedisTimeSeries-stars
phpRedisTimeSeries PHP MIT Alessandro Balasco phpRedisTimeSeries-stars
redis-time-series JavaScript MIT Rafa Campoy redis-time-series-stars
redistimeseries-js JavaScript MIT Milos Nikolovski redistimeseries-js-stars
redis-modules-sdk Typescript BSD-3-Clause Dani Tseitlin redis-modules-sdk-stars
redis_ts Rust BSD-3 Thomas Profelt redis_ts-stars
redistimeseries Ruby MIT Eaden McKee redistimeseries-stars
redis-time-series Ruby MIT Matt Duszynski redis-time-series-rb-stars


The module includes a basic set of unit tests and integration tests.

Unit tests

To run all unit tests, follow these steps:

$ make unittests

Integration tests

Integration tests are based on RLTest, and specific setup parameters can be provided to configure tests. By default the tests will be ran for all common commands, and with variation of persistency and replication.

To run all integration tests in a Python virtualenv, follow these steps:

$ mkdir -p .env
$ virtualenv .env
$ source .env/bin/activate
$ pip install -r tests/flow/requirements.txt
$ make test

To understand what test options are available simply run:

$ make help

For example, to run the tests strictly desigined for TS.ADD command, follow these steps:

$ make test


Read the docs at

Mailing List / Forum

Got questions? Feel free to ask at the RedisTimeSeries forum.


Redis Source Available License Agreement, see LICENSE