---
acl_categories:
- '@timeseries'
- '@read'
- '@fast'
arguments:
- name: key
type: key
- name: LATEST
optional: true
since: 1.8.0
type: string
categories:
- docs
- develop
- stack
- oss
- rs
- rc
- oss
- kubernetes
- clients
complexity: O(1)
description: Get the sample with the highest timestamp from a given time series
group: timeseries
hidden: false
linkTitle: TS.GET
module: TimeSeries
railroad_diagram: /images/railroad/ts.get.svg
since: 1.0.0
stack_path: docs/data-types/timeseries
summary: Get the sample with the highest timestamp from a given time series
syntax_fmt: TS.GET key [LATEST]
title: TS.GET
---
Get the sample with the highest timestamp from a given time series
[Examples](#examples)
## Required arguments
key
is key name for the time series.
## Optional arguments
LATEST (since RedisTimeSeries v1.8)
is used when a time series is a compaction. With `LATEST`, TS.GET reports the compacted value of the latest (possibly partial) bucket. Without `LATEST`, TS.GET does not report the latest (possibly partial) bucket. When a time series is not a compaction, `LATEST` is ignored.
The data in the latest bucket of a compaction is possibly partial. A bucket is _closed_ and compacted only upon arrival of a new sample that _opens_ a new _latest_ bucket. There are cases, however, when the compacted value of the latest (possibly partial) bucket is also required. In such a case, use `LATEST`.
## Examples
Get latest measured temperature for a city
Create a time series to store the temperatures measured in Tel Aviv and add four measurements for Sun Jan 01 2023
{{< highlight bash >}}
127.0.0.1:6379> TS.CREATE temp:TLV LABELS type temp location TLV
OK
127.0.0.1:6379> TS.MADD temp:TLV 1672534800 12 temp:TLV 1672556400 16 temp:TLV 1672578000 21 temp:TLV 1672599600 14
{{< / highlight >}}
Next, get the latest measured temperature (the temperature with the highest timestamp)
{{< highlight bash >}}
127.0.0.1:6379> TS.GET temp:TLV
1) (integer) 1672599600
2) 14
{{< / highlight >}}
Get latest maximal daily temperature for a city
Create a time series to store the temperatures measured in Jerusalem
{{< highlight bash >}}
127.0.0.1:6379> TS.CREATE temp:JLM LABELS type temp location JLM
OK
{{< / highlight >}}
Next, create a compacted time series named _dailyAvgTemp:JLM_ containing one compacted sample per 24 hours: the maximum of all measurements taken from midnight to next midnight.
{{< highlight bash >}}
127.0.0.1:6379> TS.CREATE dailyMaxTemp:JLM LABELS type temp location JLM
OK
127.0.0.1:6379> TS.CREATERULE temp:JLM dailyMaxTemp:JLM AGGREGATION max 86400000
OK
{{< / highlight >}}
Add four measurements for Sun Jan 01 2023 and three measurements for Mon Jan 02 2023
{{< highlight bash >}}
127.0.0.1:6379> TS.MADD temp:JLM 1672534800000 12 temp:JLM 1672556400000 16 temp:JLM 1672578000000 21 temp:JLM 1672599600000 14
1) (integer) 1672534800000
2) (integer) 1672556400000
3) (integer) 1672578000000
4) (integer) 1672599600000
127.0.0.1:6379> TS.MADD temp:JLM 1672621200000 11 temp:JLM 1672642800000 21 temp:JLM 1672664400000 26
1) (integer) 1672621200000
2) (integer) 1672642800000
3) (integer) 1672664400000
{{< / highlight >}}
Next, get the latest maximum daily temperature; do not report the latest, possibly partial, bucket
{{< highlight bash >}}
127.0.0.1:6379> TS.GET dailyMaxTemp:JLM
1) (integer) 1672531200000
2) 21
{{< / highlight >}}
Get the latest maximum daily temperature (the temperature with the highest timestamp); report the latest, possibly partial, bucket
{{< highlight bash >}}
127.0.0.1:6379> TS.GET dailyMaxTemp:JLM LATEST
1) (integer) 1672617600000
2) 26
{{< / highlight >}}
## Redis Software and Redis Cloud compatibility
| Redis
Software | Redis
Cloud | Notes |
|:----------------------|:-----------------|:------|
| ✅ Supported
| ✅ Flexible & Annual
✅ Free & Fixed | |
## Return information
{{< multitabs id="ts-get-return-info"
tab1="RESP2"
tab2="RESP3" >}}
One of the following:
* [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of a single ([Integer reply]({{< relref "/develop/reference/protocol-spec#integers" >}}), [Simple string reply]({{< relref "/develop/reference/protocol-spec#simple-strings" >}})) pair representing (timestamp, value) of the sample with the highest timestamp.
* An empty [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) when the time series is empty.
* [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: invalid arguments, wrong key type, key does not exist, etc.
-tab-sep-
One of the following:
* [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of a single ([Integer reply]({{< relref "/develop/reference/protocol-spec#integers" >}}), [Double reply]({{< relref "/develop/reference/protocol-spec#doubles" >}})) pair representing (timestamp, value) of the sample with the highest timestamp.
* An empty [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) when the time series is empty.
* [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: invalid arguments, wrong key type, key does not exist, etc.
{{< /multitabs >}}
## See also
[`TS.MGET`]({{< relref "commands/ts.mget/" >}})
## Related topics
[RedisTimeSeries]({{< relref "/develop/data-types/timeseries/" >}})