{
  "schema_version": 2,
  "id": "operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.2-release-notes",
  "title": "RedisTimeSeries 1.2 release notes",
  "url": "https://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.2-release-notes/",
  "summary": "Added compression. Stable ingestion time independent of the number of the data points on a time series. API performance improvements. Extended client support.",
  "tags": [
    "docs",
    "operate",
    "stack"
  ],
  "last_updated": "2026-09-21T16:36:33+01:00",
  "page_type": "content",
  "content_hash": "082a5bfb6c9b2c1f6dcda4ee90b9dddf5ba87b4383fec85d5f68ca78ca8124ac",
  "sections": [
    {
      "id": "requirements",
      "title": "Requirements",
      "role": "overview",
      "text": "RedisTimeSeries v1.2.7 requires:\n\n- Minimum Redis compatibility version (database): 5.0.0\n- Minimum Redis Enterprise Software version (cluster): 6.0.12"
    },
    {
      "id": "v127-june-2020",
      "title": "v1.2.7 (June 2020)",
      "role": "content",
      "text": "This is a maintenance release for version 1.2.\n\nDetails:\n\n- Bugfixes:\n\n    - #[414](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/414) Crash when a query had an empty label `(foo,)`"
    },
    {
      "id": "v126-may-2020",
      "title": "v1.2.6 (May 2020)",
      "role": "content",
      "text": "This is a maintenance release for version 1.2.\n\nDetails:\n\n- Minor enhancements:\n\n    - #[403](https://github.com/RedisTimeSeries/RedisTimeSeries/pull/403) Support for multi-value filtering in `TS.MGET` and `TS.MRANGE`.\n\n- Bugfixes:\n\n    - #[378](https://github.com/RedisTimeSeries/RedisTimeSeries/pull/378) Using `snprintf` to ensure the same precision of floating-point value replies.\n    - #[374](https://github.com/RedisTimeSeries/RedisTimeSeries/pull/374) `TS.RANGE` crashed when COUNT argument was missing.\n    - #[395](https://github.com/RedisTimeSeries/RedisTimeSeries/pull/395) Check minimum compatible Redis version at module load time."
    },
    {
      "id": "v125-march-2020",
      "title": "v1.2.5 (March 2020)",
      "role": "content",
      "text": "Headlines:\n\n- This release improves overall stability and provides fixes for issues found after the previous release.\n\nDetails:\n\n- Bugfixes:\n    - #[358](https://github.com/redistimeseries/redistimeseries/issues/358) [Wrong behaviour](https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/redistimeseries/wH0R69e8lOs) in `TS.RANGE` due to shifting left.\n    - #[353](https://github.com/redistimeseries/redistimeseries/issues/353) Crash where the name of a time-series was already taken due to auto-compaction."
    },
    {
      "id": "v123-february-2020",
      "title": "v1.2.3 (February 2020)",
      "role": "content",
      "text": "Headlines:\n\n- This release improves overall stability and provides fixes for issues found after the previous release.\n\nDetails:\n\n- Bugfixes:\n    - #[338](https://github.com/redistimeseries/redistimeseries/issues/338) reverting #[319](https://github.com/redistimeseries/redistimeseries/issues/319).  Aggregation should happen on deterministic time buckets."
    },
    {
      "id": "v12-ga-122---january-2020",
      "title": "v1.2 GA (1.2.2 - January 2020)",
      "role": "content",
      "text": "This is the general availability (GA) release of RedisTimeSeries 1.2 (1.2.2).\n\nHeadlines:\n\n- Compression added which can reduce memory up to 98% and improve read performance up to 50%.\n- Stable ingestion time independent of the number of the data points on a time-series.\n- Reviewed API with performance improvements and removed ambiguity.\n- Extended [client support](https://redis.io/docs/latest/develop/data-types/timeseries)\n\n(we will blog about this release soon including performance improvements results and the link here)\n\nFull details:\n\n- Added functionality\n    - #[261](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/261) Samples are compressed using `Double Delta compression` which results in cost savings and faster query times.\n    - Based on the [Gorilla paper](https://www.vldb.org/pvldb/vol8/p1816-teller.pdf).\n        - In theory, this can save space up to 98%. (2 bits per sample in stead of 128).\n        - In practice, a memory reduction of 5-8x is common but depends on the use case.\n    - Initial benchmarks show 94% memory savings and performance improvements in reads up to XX%.\n    - `UNCOMPRESSED` option in `TS.CREATE`.\n\n- API changes / Enhancements\n    - #[241](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/241) Overwriting the last sample with the same timestamp is not allowed.\n    - #[242](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/242) revised `TS.INCRBY/DECRBY`\n    - Returns a timestamp.  The behaviour is now aligned with `TS.ADD`.\n    - The `RESET` functionality was removed. `RESET` contradicted the rewriting of the last sample (#[241](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/241)).\n    Alternatively, you can reconstruct similar behaviour by\n        - `TS.ADD ts * 1` + `sum` aggregation\n        - `TS.INCRBY ts 1` + `range` aggregation\n    - #[317](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/317) Aligning response on empty series of `TS.GET` with `TS.RANGE`.\n    - #[285](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/285) #[318](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/318) Changed default behaviour of `TS.MRANGE` and `TS.MGET` to no longer returns the labels of each time-series in order reduce network traffic. Optional `WITHLABELS` argument added.\n    - #[319](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/319) `TS.RANGE` and `TS.MRANGE` aggregation starting from requested timestamp.\n\n- Performance improvements\n    - #[237](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/237) Downsampling after time window is closed vs. downsampling with each sample.\n    - #[285](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/285) #[318](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/318) Optional `WITHLABELS` argument added.  This feature improves read performance drastically.\n\n- Minor Enhancements\n    - #[230](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/230) `TS.INFO` now includes `total samples`, `memory usage`,`first time stamp`, ...\n    - #[230](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/230) `MEMORY` calculates series memory footprint.\n\n- Bugfixes since 1.0.3\n    - #[204](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/204) Module initialization params changed to 64 bits.\n    - #[266](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/266) Memory leak in the aggregator context.\n    - #[260](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/260) Better error messages.\n    - #[259](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/259) #[257](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/257) #[219](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/219) Miscellaneous.\n    - #[320](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/320) Delete the existing key prior to restoring it.\n    - #[323](https://github.com/RedisTimeSeries/RedisTimeSeries/issues/323) Empty first sample on aggregation.\n\n> [!NOTE]\n> The version inside Redis will be 10202 or 1.2.2 in semantic versioning."
    }
  ],
  "examples": []
}
