Skip to main content

Manage Redis time-series data using RedisTimeSeries Browser Tool

Profile picture for Ajeet Raina
Ajeet Raina, Former Developer Growth Manager at Redis

If you want to add a time series data structure to your Redis database, check out RedisTimeSeries browser tool that comes with RedisInsight.

RedisTimeseries is a Redis module developed by Redis to enhance your experience managing time-series data with Redis. It simplifies the use of Redis for time-series use cases such as internet of things (IoT) data, stock prices, and telemetry. With RedisTimeSeries, you can ingest and query millions of samples and events at the speed of Redis. Advanced tooling such as downsampling and aggregation ensure a small memory footprint without impacting performance. Use a variety of queries for visualization and monitoring with built-in connectors to popular monitoring tools like Grafana, Prometheus, and Telegraf.

With RedisInsight browser tool, you can perform the below sets of activities:

  • TS.RANGE & TS.MRANGE are supported
  • Charts support milliseconds.
  • Ability to configure auto refresh interval.
  • Ability to submit query with ‘ctrl + enter’ in single line mode
  • Display tabular as well as JSON view

Step 1. Create Redis database

Follow this link to create Redis Stack database that comes with RedisTimeSeries module enabled

Step 2: Download RedisInsight

To install RedisInsight on your local system, you need to first download the software from the Redis website.

Click this link to access a form that allows you to select the operating system of your choice.

My Image

Run the installer. After the web server starts, open http://YOUR_HOST_IP:8001 and add a Redis database connection.

Select "Connect to a Redis database" My Image

Enter the requested details, including Name, Host (endpoint), Port, and Password. Then click “ADD REDIS DATABASE”.

Step 3. Clone the repository

$ git clone
cd redis-datasets/redistimeseries/AirQualityUCI

Step 4. Execute the Python script

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""sample module for dataset loading into redistimeseries from csv file

import argparse
import redis
import csv
import datetime
import logging
from tqdm import tqdm

def parse_dataset_row(line):

result = False
date = None
Time = None
unix_ts = None
carbon_monoxide = None
temperature_c = None
relative_humidity = None
# check if we have 15 fields or more, and all fields have something on it
if len(line) > 14 and sum([len(line[x]) > 0 for x in range(0, 14)]) == 14:
str_date = line[0]
str_time = line[1]
carbon_monoxide = (
float(line[2].replace(",", "."))
if (float(line[2].replace(",", ".")) > -200.0)
else None
temperature_c = (
float(line[12].replace(",", "."))
if (float(line[12].replace(",", ".")) > -200.0)
else None
relative_humidity = (
float(line[13].replace(",", "."))
if (float(line[13].replace(",", ".")) > -200.0)
else None
unix_ts = int(
"{0} {1}".format(str_date, str_time), "%d/%m/%Y %H.%M.%S"
result = True

return result, unix_ts, carbon_monoxide, temperature_c, relative_humidity

parser = argparse.ArgumentParser()
parser.add_argument("--port", type=int, help="redis instance port", default=6379)
"--password", type=int, help="redis instance password", default=None
parser.add_argument("--verbose", help="enable verbose output", action="store_true")
parser.add_argument("--host", type=str, help="redis instance host", default="")
help="csv file containing the dataset",
"--csv_delimiter", type=str, help="csv file field delimiter", default=";"
args = parser.parse_args()

log_level = logging.ERROR
if args.verbose is True:
log_level = logging.INFO

# redis setup
redis_obj = redis.Redis(, port=args.port, password=args.password)
temperature_key = "ts:temperature"
carbon_monoxide_key = "ts:carbon_monoxide"
relative_humidity_key = "ts:relative_humidity"

with open(args.csv, newline="") as csv_file:
csv_reader = csv.reader(csv_file, delimiter=args.csv_delimiter)
next(csv_reader, None) # skip the headers
for row in tqdm(csv_reader):
) = parse_dataset_row(row)
if result is True:
if temperature_c is not None:
"ts.add", temperature_key, unix_ts, temperature_c
"ts.add {0} {1} {2}".format(
temperature_key, unix_ts, temperature_c
if carbon_monoxide is not None:
"ts.add", carbon_monoxide_key, unix_ts, carbon_monoxide
"ts.add {0} {1} {2}".format(
carbon_monoxide_key, unix_ts, carbon_monoxide
if relative_humidity is not None:
"ts.add", relative_humidity_key, unix_ts, relative_humidity
"ts.add {0} {1} {2}".format(
relative_humidity_key, unix_ts, relative_humidity
except redis.RedisError as err:

Step 5. Execute the script

$ python3
9471it [00:29, 326.33it/s]

Step 6. Query a range across one or multiple time-series

TS.RANGE ts:carbon_monoxide 1112596200 1112603400


Step 7 . Displaying the JSON view


Step 8. Displaying the tabular view


Additional Resources

Redis Launchpad