diff --git a/local_examples/temp/prob/HomeProbDtsExample.java b/local_examples/temp/prob/HomeProbDtsExample.java
deleted file mode 100644
index e22998e3c..000000000
--- a/local_examples/temp/prob/HomeProbDtsExample.java
+++ /dev/null
@@ -1,243 +0,0 @@
-// EXAMPLE: home_prob_dts
-package io.redis.examples;
-// REMOVE_START
-import org.junit.jupiter.api.Test;
-import redis.clients.jedis.UnifiedJedis;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-// REMOVE_END
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class HomeProbDtsExample {
-
-    @Test
-    public void run() {
-        UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
-
-        // REMOVE_START
-        jedis.del(
-            "recorded_users", "other_users",
-            "group:1", "group:2", "both_groups",
-            "items_sold",
-            "male_heights", "female_heights", "all_heights",
-            "top_3_songs"
-        );
-        // REMOVE_END
-
-        // STEP_START bloom
-        List<Boolean> res1 = jedis.bfMAdd(
-            "recorded_users",
-            "andy", "cameron", "david", "michelle"
-        );
-        System.out.println(res1);  // >>> [true, true, true, true]
-
-        boolean res2 = jedis.bfExists("recorded_users", "cameron");
-        System.out.println(res2);  // >>> true
-
-        boolean res3 = jedis.bfExists("recorded_users", "kaitlyn");
-        System.out.println(res3);  // >>> false
-        // STEP_END
-        // REMOVE_START
-        assertEquals("[true, true, true, true]", res1.toString());
-        assertTrue(res2);
-        assertFalse(res3);
-        // REMOVE_END
-
-        // STEP_START cuckoo
-        boolean res4 = jedis.cfAdd("other_users", "paolo");
-        System.out.println(res4);  // >>> true
-
-        boolean res5 = jedis.cfAdd("other_users", "kaitlyn");
-        System.out.println(res5);  // >>> true
-
-        boolean res6 = jedis.cfAdd("other_users", "rachel");
-        System.out.println(res6);  // >>> true
-
-        List<Boolean> res7 = jedis.cfMExists(
-            "other_users",
-            "paolo", "rachel", "andy"
-        );
-        System.out.println(res7);  // >>> [true, true, false]
-
-        boolean res8 = jedis.cfDel("other_users", "paolo");
-        System.out.println(res8);  // >>> true
-
-        boolean res9 = jedis.cfExists("other_users", "paolo");
-        System.out.println(res9);  // >>> false
-        // STEP_END
-        // REMOVE_START
-        assertTrue(res4);
-        assertTrue(res5);
-        assertTrue(res6);
-        assertEquals("[true, true, false]", res7.toString());
-        assertTrue(res8);
-        assertFalse(res9);
-        // REMOVE_END
-
-        // STEP_START hyperloglog
-        long res10 = jedis.pfadd("group:1", "andy", "cameron", "david");
-        System.out.println(res10);  // >>> 1
-
-        long res11 = jedis.pfcount("group:1");
-        System.out.println(res11);  // >>> 3
-
-        long res12 = jedis.pfadd(
-            "group:2",
-            "kaitlyn", "michelle", "paolo", "rachel"
-        );
-        System.out.println(res12);  // >>> 1
-
-        long res13 = jedis.pfcount("group:2");
-        System.out.println(res13);  // >>> 4
-
-        String res14 = jedis.pfmerge("both_groups", "group:1", "group:2");
-        System.out.println(res14);  // >>> OK
-
-        long res15 = jedis.pfcount("both_groups");
-        System.out.println(res15);  // >>> 7
-        // STEP_END
-        // REMOVE_START
-        assertEquals(1, res10);
-        assertEquals(3, res11);
-        assertEquals(1, res12);
-        assertEquals(4, res13);
-        assertEquals("OK", res14);
-        assertEquals(7, res15);
-        // REMOVE_END
-
-        // STEP_START cms
-        // Specify that you want to keep the counts within 0.01
-        // (1%) of the true value with a 0.005 (0.5%) chance
-        // of going outside this limit.
-        String res16 = jedis.cmsInitByProb("items_sold", 0.01, 0.005);
-        System.out.println(res16);  // >>> OK
-
-        Map<String, Long> firstItemIncrements = new HashMap<>();
-        firstItemIncrements.put("bread", 300L);
-        firstItemIncrements.put("tea", 200L);
-        firstItemIncrements.put("coffee", 200L);
-        firstItemIncrements.put("beer", 100L);
-
-        List<Long> res17 = jedis.cmsIncrBy("items_sold",
-            firstItemIncrements
-        );
-        res17.sort(null);
-        System.out.println();  // >>> [100, 200, 200, 300]
-
-        Map<String, Long> secondItemIncrements = new HashMap<>();
-        secondItemIncrements.put("bread", 100L);
-        secondItemIncrements.put("coffee", 150L);
-
-        List<Long> res18 = jedis.cmsIncrBy("items_sold",
-            secondItemIncrements
-        );
-        res18.sort(null);
-        System.out.println(res18);  // >>> [350, 400]
-
-        List<Long> res19 = jedis.cmsQuery(
-            "items_sold",
-            "bread", "tea", "coffee", "beer"
-        );
-        res19.sort(null);
-        System.out.println(res19);  // >>> [100, 200, 350, 400]
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res16);
-        assertEquals("[100, 200, 200, 300]", res17.toString());
-        assertEquals("[350, 400]", res18.toString());
-        assertEquals("[100, 200, 350, 400]", res19.toString());
-        // REMOVE_END
-
-        // STEP_START tdigest
-        String res20 = jedis.tdigestCreate("male_heights");
-        System.out.println(res20);  // >>> OK
-
-        String res21 = jedis.tdigestAdd("male_heights", 
-            175.5, 181, 160.8, 152, 177, 196, 164);
-        System.out.println(res21);  // >>> OK
-
-        double res22 = jedis.tdigestMin("male_heights");
-        System.out.println(res22);  // >>> 152.0
-
-        double res23 = jedis.tdigestMax("male_heights");
-        System.out.println(res23);  // >>> 196.0
-
-        List<Double> res24 = jedis.tdigestQuantile("male_heights", 0.75);
-        System.out.println(res24);  // >>> [181.0]
-
-        // Note that the CDF value for 181 is not exactly 0.75.
-        // Both values are estimates.
-        List<Double> res25 = jedis.tdigestCDF("male_heights", 181);
-        System.out.println(res25);  // >>> [0.7857142857142857]
-
-        String res26 = jedis.tdigestCreate("female_heights");
-        System.out.println(res26);  // >>> OK
-
-        String res27 = jedis.tdigestAdd("female_heights",
-            155.5, 161, 168.5, 170, 157.5, 163, 171);
-        System.out.println(res27);  // >>> OK
-
-        List<Double> res28 = jedis.tdigestQuantile("female_heights", 0.75);
-        System.out.println(res28);  // >>> [170.0]
-
-        String res29 = jedis.tdigestMerge(
-            "all_heights",
-            "male_heights", "female_heights"
-        );
-        System.out.println(res29);  // >>> OK
-        List<Double> res30 = jedis.tdigestQuantile("all_heights", 0.75);
-        System.out.println(res30);  // >>> [175.5]
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res20);
-        assertEquals("OK", res21);
-        assertEquals(152.0, res22);
-        assertEquals(196.0, res23);
-        assertEquals("[181.0]", res24.toString());
-        assertEquals("[0.7857142857142857]", res25.toString());
-        assertEquals("OK", res26);
-        assertEquals("OK", res27);
-        assertEquals("[170.0]", res28.toString());
-        assertEquals("OK", res29);
-        assertEquals("[175.5]", res30.toString());
-        // REMOVE_END
-
-        // STEP_START topk
-        String res31 = jedis.topkReserve("top_3_songs", 3L, 2000L, 7L, 0.925D);
-        System.out.println(res31);  // >>> OK
-
-        Map<String, Long> songIncrements = new HashMap<>();
-        songIncrements.put("Starfish Trooper", 3000L);
-        songIncrements.put("Only one more time", 1850L);
-        songIncrements.put("Rock me, Handel", 1325L);
-        songIncrements.put("How will anyone know?", 3890L);
-        songIncrements.put("Average lover", 4098L);
-        songIncrements.put("Road to everywhere", 770L);
-
-        List<String> res32 = jedis.topkIncrBy("top_3_songs",
-            songIncrements
-        );
-        System.out.println(res32);
-        // >>> [null, null, null, null, null, Rock me, Handel]
-
-        List<String> res33 = jedis.topkList("top_3_songs");
-        System.out.println(res33);
-        // >>> [Average lover, How will anyone know?, Starfish Trooper]
-
-        List<Boolean> res34 = jedis.topkQuery("top_3_songs",
-            "Starfish Trooper", "Road to everywhere"
-        );
-        System.out.println(res34);
-        // >>> [true, false]
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res31);
-        // Value of res32 is not deterministic.
-        assertEquals("[Average lover, How will anyone know?, Starfish Trooper]", res33.toString());
-        assertEquals("[true, false]", res34.toString());
-        // REMOVE_END
-    }
-}
\ No newline at end of file
diff --git a/local_examples/temp/prob/home_prob_dts.py b/local_examples/temp/prob/home_prob_dts.py
deleted file mode 100644
index 39d516242..000000000
--- a/local_examples/temp/prob/home_prob_dts.py
+++ /dev/null
@@ -1,232 +0,0 @@
-# EXAMPLE: home_prob_dts
-"""
-Probabilistic data type examples:
- https://redis.io/docs/latest/develop/connect/clients/python/redis-py/prob
-"""
-
-# HIDE_START
-import redis
-r = redis.Redis(decode_responses=True)
-# HIDE_END
-# REMOVE_START
-r.delete(
-    "recorded_users", "other_users",
-    "group:1", "group:2", "both_groups",
-    "items_sold",
-    "male_heights", "female_heights", "all_heights",
-    "top_3_songs"
-)
-# REMOVE_END
-
-# STEP_START bloom
-res1 = r.bf().madd("recorded_users", "andy", "cameron", "david", "michelle")
-print(res1)  # >>> [1, 1, 1, 1]
-
-res2 = r.bf().exists("recorded_users", "cameron")
-print(res2)  # >>> 1
-
-res3 = r.bf().exists("recorded_users", "kaitlyn")
-print(res3)  # >>> 0
-# STEP_END
-# REMOVE_START
-assert res1 == [1, 1, 1, 1]
-assert res2 == 1
-assert res3 == 0
-# REMOVE_END
-
-# STEP_START cuckoo
-res4 = r.cf().add("other_users", "paolo")
-print(res4)  # >>> 1
-
-res5 = r.cf().add("other_users", "kaitlyn")
-print(res5)  # >>> 1
-
-res6 = r.cf().add("other_users", "rachel")
-print(res6)  # >>> 1
-
-res7 = r.cf().mexists("other_users", "paolo", "rachel", "andy")
-print(res7)  # >>> [1, 1, 0]
-
-res8 = r.cf().delete("other_users", "paolo")
-print(res8)  # >>> 1
-
-res9 = r.cf().exists("other_users", "paolo")
-print(res9)  # >>> 0
-# STEP_END
-# REMOVE_START
-assert res4 == 1
-assert res5 == 1
-assert res6 == 1
-assert res7 == [1, 1, 0]
-assert res8 == 1
-assert res9 == 0
-# REMOVE_END
-
-# STEP_START hyperloglog
-res10 = r.pfadd("group:1", "andy", "cameron", "david")
-print(res10)  # >>> 1
-
-res11 = r.pfcount("group:1")
-print(res11)  # >>> 3
-
-res12 = r.pfadd("group:2", "kaitlyn", "michelle", "paolo", "rachel")
-print(res12)  # >>> 1
-
-res13 = r.pfcount("group:2")
-print(res13)  # >>> 4
-
-res14 = r.pfmerge("both_groups", "group:1", "group:2")
-print(res14)  # >>> True
-
-res15 = r.pfcount("both_groups")
-print(res15)  # >>> 7
-# STEP_END
-# REMOVE_START
-assert res10 == 1
-assert res11 == 3
-assert res12 == 1
-assert res13 == 4
-assert res14
-assert res15 == 7
-# REMOVE_END
-
-# STEP_START cms
-# Specify that you want to keep the counts within 0.01
-# (1%) of the true value with a 0.005 (0.5%) chance
-# of going outside this limit.
-res16 = r.cms().initbyprob("items_sold", 0.01, 0.005)
-print(res16)  # >>> True
-
-# The parameters for `incrby()` are two lists. The count
-# for each item in the first list is incremented by the
-# value at the same index in the second list.
-res17 = r.cms().incrby(
-    "items_sold",
-    ["bread", "tea", "coffee", "beer"],  # Items sold
-    [300, 200, 200, 100]
-)
-print(res17)  # >>> [300, 200, 200, 100]
-
-res18 = r.cms().incrby(
-    "items_sold",
-    ["bread", "coffee"],
-    [100, 150]
-)
-print(res18)  # >>> [400, 350]
-
-res19 = r.cms().query("items_sold", "bread", "tea", "coffee", "beer")
-print(res19)  # >>> [400, 200, 350, 100]
-# STEP_END
-# REMOVE_START
-assert res16
-assert res17 == [300, 200, 200, 100]
-assert res18 == [400, 350]
-assert res19 == [400, 200, 350, 100]
-# REMOVE_END
-
-# STEP_START tdigest
-res20 = r.tdigest().create("male_heights")
-print(res20)  # >>> True
-
-res21 = r.tdigest().add(
-    "male_heights",
-    [175.5, 181, 160.8, 152, 177, 196, 164]
-)
-print(res21)  # >>> OK
-
-res22 = r.tdigest().min("male_heights")
-print(res22)  # >>> 152.0
-
-res23 = r.tdigest().max("male_heights")
-print(res23)  # >>> 196.0
-
-res24 = r.tdigest().quantile("male_heights", 0.75)
-print(res24)  # >>> 181
-
-# Note that the CDF value for 181 is not exactly
-# 0.75. Both values are estimates.
-res25 = r.tdigest().cdf("male_heights", 181)
-print(res25)  # >>> [0.7857142857142857]
-
-res26 = r.tdigest().create("female_heights")
-print(res26)  # >>> True
-
-res27 = r.tdigest().add(
-    "female_heights",
-    [155.5, 161, 168.5, 170, 157.5, 163, 171]
-)
-print(res27)  # >>> OK
-
-res28 = r.tdigest().quantile("female_heights", 0.75)
-print(res28)  # >>> [170]
-
-res29 = r.tdigest().merge(
-    "all_heights", 2, "male_heights", "female_heights"
-)
-print(res29)  # >>> OK
-
-res30 = r.tdigest().quantile("all_heights", 0.75)
-print(res30)  # >>> [175.5]
-# STEP_END
-# REMOVE_START
-assert res20
-assert res21 == "OK"
-assert res22 == 152.0
-assert res23 == 196.0
-assert res24 == [181]
-assert res25 == [0.7857142857142857]
-assert res26
-assert res27 == "OK"
-assert res28 == [170]
-assert res29 == "OK"
-assert res30 == [175.5]
-# REMOVE_END
-
-# STEP_START topk
-# The `reserve()` method creates the Top-K object with
-# the given key. The parameters are the number of items
-# in the ranking and values for `width`, `depth`, and
-# `decay`, described in the Top-K reference page.
-res31 = r.topk().reserve("top_3_songs", 3, 7, 8, 0.9)
-print(res31)  # >>> True
-
-# The parameters for `incrby()` are two lists. The count
-# for each item in the first list is incremented by the
-# value at the same index in the second list.
-res32 = r.topk().incrby(
-    "top_3_songs",
-    [
-        "Starfish Trooper",
-        "Only one more time",
-        "Rock me, Handel",
-        "How will anyone know?",
-        "Average lover",
-        "Road to everywhere"
-    ],
-    [
-        3000,
-        1850,
-        1325,
-        3890,
-        4098,
-        770
-    ]
-)
-print(res32)
-# >>> [None, None, None, 'Rock me, Handel', 'Only one more time', None]
-
-res33 = r.topk().list("top_3_songs")
-print(res33)
-# >>> ['Average lover', 'How will anyone know?', 'Starfish Trooper']
-
-res34 = r.topk().query(
-    "top_3_songs", "Starfish Trooper", "Road to everywhere"
-)
-print(res34)  # >>> [1, 0]
-# STEP_END
-# REMOVE_START
-assert res31
-assert res32 == [None, None, None, 'Rock me, Handel', 'Only one more time', None]
-assert res33 == ['Average lover', 'How will anyone know?', 'Starfish Trooper']
-assert res34 == [1, 0]
-# REMOVE_END
diff --git a/local_examples/temp/time_series/TimeSeriesTutorialExample.java b/local_examples/temp/time_series/TimeSeriesTutorialExample.java
deleted file mode 100644
index f40fa8000..000000000
--- a/local_examples/temp/time_series/TimeSeriesTutorialExample.java
+++ /dev/null
@@ -1,662 +0,0 @@
-// EXAMPLE: time_series_tutorial
-// REMOVE_START
-package io.redis.examples;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import org.junit.jupiter.api.Test;
-// REMOVE_END
-import redis.clients.jedis.UnifiedJedis;
-import redis.clients.jedis.timeseries.*;
-import redis.clients.jedis.timeseries.TSElement;
-
-import java.util.*;
-
-public class TimeSeriesTutorialExample {
-
-    @Test
-    public void run() {
-        UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
-        // REMOVE_START
-        // Clear any keys before using them in tests
-        jedis.del(
-            "thermometer:1", "thermometer:2", "thermometer:3",
-            "rg:1", "rg:2", "rg:3", "rg:4",
-            "sensor3",
-            "wind:1", "wind:2", "wind:3", "wind:4",
-            "hyg:1", "hyg:compacted"
-        );
-        // REMOVE_END
-
-        // STEP_START create
-        String res1 = jedis.tsCreate("thermometer:1");
-        System.out.println(res1); // >>> OK
-
-        String res2 = jedis.type("thermometer:1");
-        System.out.println(res2); // >>> TSDB-TYPE
-
-        TSInfo res3 = jedis.tsInfo("thermometer:1");
-        System.out.println(res3.getProperty("totalSamples")); // >>> 0
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res1);
-        assertEquals("TSDB-TYPE", res2);
-        assertEquals((Long) 0L, res3.getProperty("totalSamples"));
-        // REMOVE_END
-
-        // STEP_START create_retention
-        long res4 = jedis.tsAdd("thermometer:2", 1L, 10.8, 
-            TSCreateParams.createParams().retention(100));
-        System.out.println(res4); // >>> 1
-
-        TSInfo res5 = jedis.tsInfo("thermometer:2");
-        System.out.println(res5.getProperty("retentionTime")); // >>> 100
-        // STEP_END
-        // REMOVE_START
-        assertEquals(1L, res4);
-        assertEquals((Long) 100L, res5.getProperty("retentionTime"));
-        // REMOVE_END
-
-        // STEP_START create_labels
-        Map<String, String> labels = new HashMap<>();
-        labels.put("location", "UK");
-        labels.put("type", "Mercury");
-        
-        long res6 = jedis.tsAdd("thermometer:3", 1L, 10.4,
-            TSCreateParams.createParams().labels(labels));
-        System.out.println(res6); // >>> 1
-
-        TSInfo res7 = jedis.tsInfo("thermometer:3");
-        System.out.println("Labels: " + res7.getLabels());
-        // >>> Labels: {location=UK, type=Mercury}
-        // STEP_END
-        // REMOVE_START
-        assertEquals(1L, res6);
-        assertEquals(labels, res7.getLabels());
-        // REMOVE_END
-
-        // STEP_START madd
-        List<Long> res8 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("thermometer:1", new TSElement(1L, 9.2)),
-            new AbstractMap.SimpleEntry<>("thermometer:1", new TSElement(2L, 9.9)),
-            new AbstractMap.SimpleEntry<>("thermometer:2", new TSElement(2L, 10.3))
-        );
-        System.out.println(res8); // >>> [1, 2, 2]
-        // STEP_END
-        // REMOVE_START
-        assertEquals(Arrays.asList(1L, 2L, 2L), res8);
-        // REMOVE_END
-
-        // STEP_START get
-        // The last recorded temperature for thermometer:2
-        // was 10.3 at time 2.
-        TSElement res9 = jedis.tsGet("thermometer:2");
-        System.out.println("(" + res9.getTimestamp() + ", " + res9.getValue() + ")");
-        // >>> (2, 10.3)
-        // STEP_END
-        // REMOVE_START
-        assertEquals(2L, res9.getTimestamp());
-        assertEquals(10.3, res9.getValue(), 0.001);
-        // REMOVE_END
-
-        // STEP_START range
-        // Add 5 data points to a time series named "rg:1"
-        String res10 = jedis.tsCreate("rg:1");
-        System.out.println(res10); // >>> OK
-
-        List<Long> res11 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("rg:1", new TSElement(0L, 18.0)),
-            new AbstractMap.SimpleEntry<>("rg:1", new TSElement(1L, 14.0)),
-            new AbstractMap.SimpleEntry<>("rg:1", new TSElement(2L, 22.0)),
-            new AbstractMap.SimpleEntry<>("rg:1", new TSElement(3L, 18.0)),
-            new AbstractMap.SimpleEntry<>("rg:1", new TSElement(4L, 24.0))
-        );
-        System.out.println(res11); // >>> [0, 1, 2, 3, 4]
-
-        // Retrieve all the data points in ascending order
-        List<TSElement> res12 = jedis.tsRange("rg:1", 0L, 4L);
-        System.out.println(res12);
-        // >>> [(0:18.0), (1:14.0), (2:22.0), (3:18.0), (4:24.0)]
-
-        // Retrieve data points up to time 1 (inclusive)
-        List<TSElement> res13 = jedis.tsRange("rg:1", 0L, 1L);
-        System.out.println(res13);
-        // >>> [(0:18.0), (1:14.0)]
-
-        // Retrieve data points from time 3 onwards
-        List<TSElement> res14 = jedis.tsRange("rg:1", 3L, 4L);
-        System.out.println(res14);
-        // >>> [(3:18.0), (4:24.0)]
-
-        // Retrieve all the data points in descending order
-        List<TSElement> res15 = jedis.tsRevRange("rg:1", 0L, 4L);
-        System.out.println(res15);
-        // >>> [(4:24.0), (3:18.0), (2:22.0), (1:14.0), (0:18.0)]
-
-        // Retrieve data points up to time 1 (inclusive), in descending order
-        List<TSElement> res16 = jedis.tsRevRange("rg:1", 0L, 1L);
-        System.out.println(res16);
-        // >>> [(1:14.0), (0:18.0)]
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res10);
-        assertEquals(Arrays.asList(0L, 1L, 2L, 3L, 4L), res11);
-        assertEquals(Arrays.asList(
-            new TSElement(0L, 18.0), new TSElement(1L, 14.0), new TSElement(2L, 22.0), 
-            new TSElement(3L, 18.0), new TSElement(4L, 24.0)), res12);
-        assertEquals(Arrays.asList(new TSElement(0L, 18.0), new TSElement(1L, 14.0)), res13);
-        assertEquals(Arrays.asList(new TSElement(3L, 18.0), new TSElement(4L, 24.0)), res14);
-        assertEquals(Arrays.asList(
-            new TSElement(4L, 24.0), new TSElement(3L, 18.0), new TSElement(2L, 22.0), 
-            new TSElement(1L, 14.0), new TSElement(0L, 18.0)), res15);
-        assertEquals(Arrays.asList(new TSElement(1L, 14.0), new TSElement(0L, 18.0)), res16);
-        // REMOVE_END
-
-        // STEP_START range_filter
-        List<TSElement> res17 = jedis.tsRange("rg:1",  
-            TSRangeParams.rangeParams()
-                .fromTimestamp(0L)
-                .toTimestamp(4L)
-                .filterByTS(0L, 2L, 4L)
-        );
-        System.out.println(res17);
-        // >>> [(0:18.0), (2:22.0), (4:24.0)]
-
-        List<TSElement> res18 = jedis.tsRevRange("rg:1",
-            TSRangeParams.rangeParams()
-                .fromTimestamp(0L)
-                .toTimestamp(4L)
-                .filterByTS(0L, 2L, 4L)
-                .filterByValues(20.0, 25.0)
-        );
-        System.out.println(res18);
-        // >>> [(4:24.0), (2:22.0)]
-
-        List<TSElement> res19 = jedis.tsRevRange("rg:1",
-            TSRangeParams.rangeParams()
-                .fromTimestamp(0L)
-                .toTimestamp(4L)
-                .filterByTS(0L, 2L, 4L)
-                .filterByValues(22.0, 22.0)
-                .count(1)
-        );
-        System.out.println(res19);
-        // >>> [(2:22.0)]
-        // STEP_END
-        // REMOVE_START
-        assertEquals(Arrays.asList(
-            new TSElement(0L, 18.0), new TSElement(2L, 22.0), new TSElement(4L, 24.0)), res17);
-        assertEquals(Arrays.asList(new TSElement(4L, 24.0), new TSElement(2L, 22.0)), res18);
-        assertEquals(Arrays.asList(new TSElement(2L, 22.0)), res19);
-        // REMOVE_END
-
-        // STEP_START query_multi
-        // Create three new "rg:" time series (two in the US
-        // and one in the UK, with different units) and add some
-        // data points.
-        Map<String, String> usLabels1 = new HashMap<>();
-        usLabels1.put("location", "us");
-        usLabels1.put("unit", "cm");
-        
-        Map<String, String> usLabels2 = new HashMap<>();
-        usLabels2.put("location", "us");
-        usLabels2.put("unit", "in");
-        
-        Map<String, String> ukLabels = new HashMap<>();
-        ukLabels.put("location", "uk");
-        ukLabels.put("unit", "mm");
-
-        String res20 = jedis.tsCreate("rg:2",
-            TSCreateParams.createParams().labels(usLabels1));
-        System.out.println(res20); // >>> OK
-
-        String res21 = jedis.tsCreate("rg:3",
-            TSCreateParams.createParams().labels(usLabels2));
-        System.out.println(res21); // >>> OK
-
-        String res22 = jedis.tsCreate("rg:4",
-            TSCreateParams.createParams().labels(ukLabels));
-        System.out.println(res22); // >>> OK
-
-        List<Long> res23 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("rg:2", new TSElement(0L, 1.8)),
-            new AbstractMap.SimpleEntry<>("rg:3", new TSElement(0L, 0.9)),
-            new AbstractMap.SimpleEntry<>("rg:4", new TSElement(0L, 25.0))
-        );
-        System.out.println(res23); // >>> [0, 0, 0]
-
-        List<Long> res24 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("rg:2", new TSElement(1L, 2.1)),
-            new AbstractMap.SimpleEntry<>("rg:3", new TSElement(1L, 0.77)),
-            new AbstractMap.SimpleEntry<>("rg:4", new TSElement(1L, 18.0))
-        );
-        System.out.println(res24); // >>> [1, 1, 1]
-
-        List<Long> res25 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("rg:2", new TSElement(2L, 2.3)),
-            new AbstractMap.SimpleEntry<>("rg:3", new TSElement(2L, 1.1)),
-            new AbstractMap.SimpleEntry<>("rg:4", new TSElement(2L, 21.0))
-        );
-        System.out.println(res25); // >>> [2, 2, 2]
-        
-        List<Long> res26 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("rg:2", new TSElement(3L, 1.9)),
-            new AbstractMap.SimpleEntry<>("rg:3", new TSElement(3L, 0.81)),
-            new AbstractMap.SimpleEntry<>("rg:4", new TSElement(3L, 19.0))
-        );
-        System.out.println(res26); // >>> [3, 3, 3]
-
-        List<Long> res27 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("rg:2", new TSElement(4L, 1.78)),
-            new AbstractMap.SimpleEntry<>("rg:3", new TSElement(4L, 0.74)),
-            new AbstractMap.SimpleEntry<>("rg:4", new TSElement(4L, 23.0))
-        );
-        System.out.println(res27); // >>> [4, 4, 4]
-
-        // Retrieve the last data point from each US time series.
-        Map<String, TSMGetElement> res28 = jedis.tsMGet(
-            TSMGetParams.multiGetParams().latest(),
-             "location=us"
-        );
-        System.out.println(res28);
-        // >>> {rg:2=TSMGetElement{key=rg:2, labels={}, element=(4:1.78)}...
-
-        // Retrieve the same data points, but include the `unit`
-        // label in the results.
-        Map<String, TSMGetElement> res29 = jedis.tsMGet(
-            TSMGetParams.multiGetParams().selectedLabels("unit"), 
-            "location=us"
-        );
-        System.out.println(res29);
-        // >>> {rg:2=TSMGetElement{key=rg:2, labels={unit=cm}, element=(4:1.78)}...
-
-        // Retrieve data points up to time 2 (inclusive) from all
-        // time series that use millimeters as the unit. Include all
-        // labels in the results.
-        Map<String, TSMRangeElements> res30 = jedis.tsMRange(
-            TSMRangeParams.multiRangeParams(0L, 2L)
-                .withLabels()
-                .filter("unit=mm")
-        );
-        System.out.println(res30);
-        // >>> {rg:4=TSMRangeElements{key=rg:4, labels={location=uk, unit=mm}, value=[(0:25.0), (1:18.0), (2:21.0)]}}
-
-        // Retrieve data points from time 1 to time 3 (inclusive) from
-        // all time series that use centimeters or millimeters as the unit,
-        // but only return the `location` label. Return the results
-        // in descending order of timestamp.
-        Map<String, TSMRangeElements> res31 = jedis.tsMRevRange(
-            TSMRangeParams.multiRangeParams(1L, 3L)
-                .selectedLabels("location")
-                .filter("unit=(cm,mm)")
-        );
-        System.out.println(res31);
-        // >>> {rg:2=TSMRangeElements{key=rg:2, labels={location=us, unit=cm}, value=[(1:2.1)...
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res20);
-        assertEquals("OK", res21);
-        assertEquals("OK", res22);
-        assertEquals(Arrays.asList(0L, 0L, 0L), res23);
-        assertEquals(Arrays.asList(1L, 1L, 1L), res24);
-        assertEquals(Arrays.asList(2L, 2L, 2L), res25);
-        assertEquals(Arrays.asList(3L, 3L, 3L), res26);
-        assertEquals(Arrays.asList(4L, 4L, 4L), res27);
-        assertEquals(2, res28.size());
-
-        assertTrue(res28.containsKey("rg:2"));
-        TSMGetElement res28rg2 = res28.get("rg:2");
-        assertEquals("rg:2", res28rg2.getKey());
-        assertEquals(0, res28rg2.getLabels().size());
-        assertEquals(4L, res28rg2.getElement().getTimestamp());
-        assertEquals(1.78, res28rg2.getElement().getValue(), 0.001);
-
-        assertTrue(res28.containsKey("rg:3"));
-        TSMGetElement res28rg3 = res28.get("rg:3");
-        assertEquals("rg:3", res28rg3.getKey());
-        assertEquals(0, res28rg3.getLabels().size());
-        assertEquals(4L, res28rg3.getElement().getTimestamp());
-        assertEquals(0.74, res28rg3.getElement().getValue(), 0.001);
-        
-        assertEquals(2, res29.size());
-        assertTrue(res29.containsKey("rg:2"));
-        TSMGetElement res29rg2 = res29.get("rg:2");
-        assertEquals("rg:2", res29rg2.getKey());
-        assertEquals(1, res29rg2.getLabels().size());
-        assertEquals("cm", res29rg2.getLabels().get("unit"));
-        assertEquals(4L, res29rg2.getElement().getTimestamp());
-        assertEquals(1.78, res29rg2.getElement().getValue(), 0.001);
-
-        assertEquals(1, res30.size());
-        assertTrue(res30.containsKey("rg:4"));
-        TSMRangeElements res30rg4 = res30.get("rg:4");
-        assertEquals("rg:4", res30rg4.getKey());
-        assertEquals(2, res30rg4.getLabels().size());
-        assertEquals("uk", res30rg4.getLabels().get("location"));
-        assertEquals("mm", res30rg4.getLabels().get("unit"));
-        assertEquals(3, res30rg4.getElements().size());
-        assertEquals(0L, res30rg4.getElements().get(0).getTimestamp());
-        assertEquals(25.0, res30rg4.getElements().get(0).getValue(), 0.001);
-        assertEquals(1L, res30rg4.getElements().get(1).getTimestamp());
-        assertEquals(18.0, res30rg4.getElements().get(1).getValue(), 0.001);
-        assertEquals(2L, res30rg4.getElements().get(2).getTimestamp());
-        assertEquals(21.0, res30rg4.getElements().get(2).getValue(), 0.001);
-
-        assertEquals(2, res31.size());
-        assertTrue(res31.containsKey("rg:2"));
-        TSMRangeElements res31rg2 = res31.get("rg:2");
-        assertEquals("rg:2", res31rg2.getKey());
-        assertEquals(1, res31rg2.getLabels().size());
-        assertEquals("us", res31rg2.getLabels().get("location"));
-        assertEquals(3, res31rg2.getElements().size());
-        assertEquals(3L, res31rg2.getElements().get(0).getTimestamp());
-        assertEquals(1.9, res31rg2.getElements().get(0).getValue(), 0.001);
-        assertEquals(2L, res31rg2.getElements().get(1).getTimestamp());
-        assertEquals(2.3, res31rg2.getElements().get(1).getValue(), 0.001);
-        assertEquals(1L, res31rg2.getElements().get(2).getTimestamp());
-        assertEquals(2.1, res31rg2.getElements().get(2).getValue(), 0.001);
-        
-        // REMOVE_END
-
-        // STEP_START agg
-        List<TSElement> res32 = jedis.tsRange("rg:2",
-            TSRangeParams.rangeParams()
-                .fromTimestamp(0L)
-                .toTimestamp(4L)
-                .aggregation(AggregationType.AVG, 2)
-        );
-        System.out.println(res32);
-        // >>> [(0:1.9500000000000002), (2:2.0999999999999996), (4:1.78)]
-        // STEP_END
-        // REMOVE_START
-        assertEquals(
-            Arrays.asList(
-                new TSElement(0L, 1.9500000000000002),
-                new TSElement(2L, 2.0999999999999996),
-                new TSElement(4L, 1.78)
-            ),
-            res32
-        );
-        // REMOVE_END
-
-        // STEP_START agg_bucket
-        String res33 = jedis.tsCreate("sensor3");
-        System.out.println(res33); // >>> OK
-
-        List<Long> res34 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(10L, 1000.0)),
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(20L, 2000.0)),
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(30L, 3000.0)),
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(40L, 4000.0)),
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(50L, 5000.0)),
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(60L, 6000.0)),
-            new AbstractMap.SimpleEntry<>("sensor3", new TSElement(70L, 7000.0))
-        );
-        System.out.println(res34); // >>> [10, 20, 30, 40, 50, 60, 70]
-
-        List<TSElement> res35 = jedis.tsRange("sensor3",
-            TSRangeParams.rangeParams()
-                .fromTimestamp(10L)
-                .toTimestamp(70L)
-                .aggregation(AggregationType.MIN, 25)
-        );
-        System.out.println(res35);
-        // >>> [(0:1000.0), (25:3000.0), (50:5000.0)]
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res33);
-        assertEquals(Arrays.asList(10L, 20L, 30L, 40L, 50L, 60L, 70L), res34);
-        assertEquals(
-            Arrays.asList(
-                new TSElement(0L, 1000.0),
-                new TSElement(25L, 3000.0),
-                new TSElement(50L, 5000.0)
-            ),
-            res35
-        );
-        // REMOVE_END
-
-        // STEP_START agg_align
-        List<TSElement> res36 = jedis.tsRange("sensor3",
-            TSRangeParams.rangeParams()
-                .fromTimestamp(10L)
-                .toTimestamp(70L)
-                .aggregation(AggregationType.MIN, 25)
-                .alignStart()
-        );
-        System.out.println(res36);
-        // >>> [(10:1000.0), (35:4000.0), (60:6000.0)]
-        // STEP_END
-        // REMOVE_START
-        assertEquals(
-            Arrays.asList(
-                new TSElement(10L, 1000.0),
-                new TSElement(35L, 4000.0),
-                new TSElement(60L, 6000.0)
-            ),
-            res36
-        );
-        // REMOVE_END
-
-        // STEP_START agg_multi
-        Map<String, String> ukCountry = new HashMap<>();
-        ukCountry.put("country", "uk");
-        
-        Map<String, String> usCountry = new HashMap<>();
-        usCountry.put("country", "us");
-
-        jedis.tsCreate("wind:1", TSCreateParams.createParams().labels(ukCountry));
-        jedis.tsCreate("wind:2", TSCreateParams.createParams().labels(ukCountry));
-        jedis.tsCreate("wind:3", TSCreateParams.createParams().labels(usCountry));
-        jedis.tsCreate("wind:4", TSCreateParams.createParams().labels(usCountry));
-
-        jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("wind:1", new TSElement(0L, 10.0)),
-            new AbstractMap.SimpleEntry<>("wind:2", new TSElement(0L, 12.0)),
-            new AbstractMap.SimpleEntry<>("wind:3", new TSElement(0L, 8.0)),
-            new AbstractMap.SimpleEntry<>("wind:4", new TSElement(0L, 15.0))
-        );
-
-        jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("wind:1", new TSElement(1L, 11.0)),
-            new AbstractMap.SimpleEntry<>("wind:2", new TSElement(1L, 13.0)),
-            new AbstractMap.SimpleEntry<>("wind:3", new TSElement(1L, 9.0)),
-            new AbstractMap.SimpleEntry<>("wind:4", new TSElement(1L, 16.0))
-        );
-
-        jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("wind:1", new TSElement(2L, 9.0)),
-            new AbstractMap.SimpleEntry<>("wind:2", new TSElement(2L, 11.0)),
-            new AbstractMap.SimpleEntry<>("wind:3", new TSElement(2L, 7.0)),
-            new AbstractMap.SimpleEntry<>("wind:4", new TSElement(2L, 14.0))
-        );
-
-        jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("wind:1", new TSElement(3L, 12.0)),
-            new AbstractMap.SimpleEntry<>("wind:2", new TSElement(3L, 14.0)),
-            new AbstractMap.SimpleEntry<>("wind:3", new TSElement(3L, 10.0)),
-            new AbstractMap.SimpleEntry<>("wind:4", new TSElement(3L, 17.0))
-        );
-
-        jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("wind:1", new TSElement(4L, 8.0)),
-            new AbstractMap.SimpleEntry<>("wind:2", new TSElement(4L, 10.0)),
-            new AbstractMap.SimpleEntry<>("wind:3", new TSElement(4L, 6.0)),
-            new AbstractMap.SimpleEntry<>("wind:4", new TSElement(4L, 13.0))
-        );
-
-        // Group by country with max reduction
-        Map<String, TSMRangeElements> res44 = jedis.tsMRange(
-            TSMRangeParams.multiRangeParams(0L, 4L)
-                .filter("country=(us,uk)")
-                .groupBy("country", "max"));
-        System.out.println(res44);
-        // >>> {country=uk=TSMRangeElements{key=country=uk, labels={}, value=[(0:12.0)...
-
-        // Group by country with avg reduction
-        Map<String, TSMRangeElements> res45 = jedis.tsMRange(
-            TSMRangeParams.multiRangeParams(0L, 4L)
-                .filter("country=(us,uk)")
-                .groupBy("country", "avg"));
-        System.out.println(res45);
-        // >>> {country=uk=TSMRangeElements{key=country=uk, labels={}, value=[(0:11.0)...
-        // STEP_END
-        // REMOVE_START
-        assertEquals(2, res44.size());
-        assertTrue(res44.containsKey("country=uk"));
-        TSMRangeElements res44uk = res44.get("country=uk");
-        assertEquals("country=uk", res44uk.getKey());
-        assertEquals(0, res44uk.getLabels().size());
-        assertEquals(5, res44uk.getElements().size());
-        assertEquals(0L, res44uk.getElements().get(0).getTimestamp());
-        assertEquals(12.0, res44uk.getElements().get(0).getValue(), 0.001);
-        assertEquals(1L, res44uk.getElements().get(1).getTimestamp());
-        assertEquals(13.0, res44uk.getElements().get(1).getValue(), 0.001);
-        assertEquals(2L, res44uk.getElements().get(2).getTimestamp());
-        assertEquals(11.0, res44uk.getElements().get(2).getValue(), 0.001);
-        assertEquals(3L, res44uk.getElements().get(3).getTimestamp());
-        assertEquals(14.0, res44uk.getElements().get(3).getValue(), 0.001);
-        assertEquals(4L, res44uk.getElements().get(4).getTimestamp());
-        assertEquals(10.0, res44uk.getElements().get(4).getValue(), 0.001);
-
-        assertTrue(res44.containsKey("country=us"));
-        TSMRangeElements res44us = res44.get("country=us");
-        assertEquals("country=us", res44us.getKey());
-        assertEquals(0, res44us.getLabels().size());
-        assertEquals(5, res44us.getElements().size());
-        assertEquals(0L, res44us.getElements().get(0).getTimestamp());
-        assertEquals(15.0, res44us.getElements().get(0).getValue(), 0.001);
-        assertEquals(1L, res44us.getElements().get(1).getTimestamp());
-        assertEquals(16.0, res44us.getElements().get(1).getValue(), 0.001);
-        assertEquals(2L, res44us.getElements().get(2).getTimestamp());
-        assertEquals(14.0, res44us.getElements().get(2).getValue(), 0.001);
-        assertEquals(3L, res44us.getElements().get(3).getTimestamp());
-        assertEquals(17.0, res44us.getElements().get(3).getValue(), 0.001);
-        assertEquals(4L, res44us.getElements().get(4).getTimestamp());
-        assertEquals(13.0, res44us.getElements().get(4).getValue(), 0.001);
-
-        assertEquals(2, res45.size());
-        assertTrue(res45.containsKey("country=uk"));
-        TSMRangeElements res45uk = res45.get("country=uk");
-        assertEquals("country=uk", res45uk.getKey());
-        assertEquals(0, res45uk.getLabels().size());
-        assertEquals(5, res45uk.getElements().size());
-        assertEquals(0L, res45uk.getElements().get(0).getTimestamp());
-        assertEquals(11.0, res45uk.getElements().get(0).getValue(), 0.001);
-        assertEquals(1L, res45uk.getElements().get(1).getTimestamp());
-        assertEquals(12.0, res45uk.getElements().get(1).getValue(), 0.001);
-        assertEquals(2L, res45uk.getElements().get(2).getTimestamp());
-        assertEquals(10.0, res45uk.getElements().get(2).getValue(), 0.001);
-        assertEquals(3L, res45uk.getElements().get(3).getTimestamp());
-        assertEquals(13.0, res45uk.getElements().get(3).getValue(), 0.001);
-        assertEquals(4L, res45uk.getElements().get(4).getTimestamp());
-        assertEquals(9.0, res45uk.getElements().get(4).getValue(), 0.001);
-
-        assertTrue(res45.containsKey("country=us"));
-        TSMRangeElements res45us = res45.get("country=us");
-        assertEquals("country=us", res45us.getKey());
-        assertEquals(0, res45us.getLabels().size());
-        assertEquals(5, res45us.getElements().size());
-        assertEquals(0L, res45us.getElements().get(0).getTimestamp());
-        assertEquals(11.5, res45us.getElements().get(0).getValue(), 0.001);
-        assertEquals(1L, res45us.getElements().get(1).getTimestamp());
-        assertEquals(12.5, res45us.getElements().get(1).getValue(), 0.001);
-        assertEquals(2L, res45us.getElements().get(2).getTimestamp());
-        assertEquals(10.5, res45us.getElements().get(2).getValue(), 0.001);
-        assertEquals(3L, res45us.getElements().get(3).getTimestamp());
-        assertEquals(13.5, res45us.getElements().get(3).getValue(), 0.001);
-        assertEquals(4L, res45us.getElements().get(4).getTimestamp());
-        assertEquals(9.5, res45us.getElements().get(4).getValue(), 0.001);
-        // REMOVE_END
-
-        // STEP_START create_compaction
-        String res46 = jedis.tsCreate("hyg:1");
-        System.out.println(res46); // >>> OK
-
-        String res47 = jedis.tsCreate("hyg:compacted");
-        System.out.println(res47); // >>> OK
-
-        String res48 = jedis.tsCreateRule("hyg:1", "hyg:compacted", AggregationType.MIN, 3);
-        System.out.println(res48); // >>> OK
-
-        TSInfo res49 = jedis.tsInfo("hyg:1");
-        System.out.println("Rules: " + res49.getProperty("rules"));
-        // >>> Rules: [{compactionKey=hyg:compacted, bucketDuration=3, aggregationType=MIN, alignmentTimestamp=0}]
-
-        TSInfo res50 = jedis.tsInfo("hyg:compacted");
-        System.out.println("Source key: " + res50.getProperty("sourceKey"));
-        // >>> Source key: hyg:1
-        // STEP_END
-        // REMOVE_START
-        assertEquals("OK", res46);
-        assertEquals("OK", res47);
-        assertEquals("OK", res48);
-        assertEquals("hyg:1", res50.getProperty("sourceKey"));
-        // REMOVE_END
-
-        // STEP_START comp_add
-        List<Long> res51 = jedis.tsMAdd(
-            new AbstractMap.SimpleEntry<>("hyg:1", new TSElement(0L, 75.0)),
-            new AbstractMap.SimpleEntry<>("hyg:1", new TSElement(1L, 77.0)),
-            new AbstractMap.SimpleEntry<>("hyg:1", new TSElement(2L, 78.0))
-        );
-        System.out.println(res51); // >>> [0, 1, 2]
-
-        List<TSElement> res52 = jedis.tsRange("hyg:compacted", 0L, 10L);
-        System.out.println(res52); // >>> []
-
-        long res53 = jedis.tsAdd("hyg:1", 3L, 79.0);
-        System.out.println(res53); // >>> 3
-
-        List<TSElement> res54 = jedis.tsRange("hyg:compacted", 0L, 10L);
-        System.out.println(res54); // >>> [(0:75.0)]
-        // STEP_END
-        // REMOVE_START
-        assertEquals(Arrays.asList(0L, 1L, 2L), res51);
-        assertEquals(Arrays.asList(), res52);
-        assertEquals(3L, res53);
-        assertEquals(Arrays.asList(new TSElement(0L, 75.0)), res54);
-        // REMOVE_END
-
-        // STEP_START del
-        TSInfo res55 = jedis.tsInfo("thermometer:1");
-        System.out.println(res55.getProperty("totalSamples")); // >>> 2
-        System.out.println(res55.getProperty("firstTimestamp")); // >>> 1
-        System.out.println(res55.getProperty("lastTimestamp")); // >>> 2
-
-        long res56 = jedis.tsAdd("thermometer:1", 3L, 9.7);
-        System.out.println(res56); // >>> 3
-
-        TSInfo res57 = jedis.tsInfo("thermometer:1");
-        System.out.println(res57.getProperty("totalSamples")); // >>> 3
-
-        long res58 = jedis.tsDel("thermometer:1", 1L, 2L);
-        System.out.println(res58); // >>> 2
-
-        TSInfo res59 = jedis.tsInfo("thermometer:1");
-        System.out.println(res59.getProperty("totalSamples")); // >>> 1
-
-        long res60 = jedis.tsDel("thermometer:1", 3L, 3L);
-        System.out.println(res60); // >>> 1
-
-        TSInfo res61 = jedis.tsInfo("thermometer:1");
-        System.out.println(res61.getProperty("totalSamples")); // >>> 0
-        // STEP_END
-        // REMOVE_START
-        assertEquals((Long) 2L, res55.getProperty("totalSamples"));
-        assertEquals((Long) 1L, res55.getProperty("firstTimestamp"));
-        assertEquals((Long) 2L, res55.getProperty("lastTimestamp"));
-        assertEquals(3L, res56);
-        assertEquals((Long) 3L, res57.getProperty("totalSamples"));
-        assertEquals(2L, res58);
-        assertEquals((Long) 1L, res59.getProperty("totalSamples"));
-        assertEquals(1L, res60);
-        assertEquals((Long) 0L, res61.getProperty("totalSamples"));
-        // REMOVE_END
-
-        //HIDE_START
-        jedis.close();
-        //HIDE_END
-    }
-}
diff --git a/local_examples/temp/time_series/dt_time_series.py b/local_examples/temp/time_series/dt_time_series.py
deleted file mode 100644
index 98a2a923c..000000000
--- a/local_examples/temp/time_series/dt_time_series.py
+++ /dev/null
@@ -1,517 +0,0 @@
-# EXAMPLE: time_series_tutorial
-# HIDE_START
-"""
-Code samples for time series page:
-    https://redis.io/docs/latest/develop/data-types/timeseries/
-"""
-
-import redis
-
-r = redis.Redis(decode_responses=True)
-# HIDE_END
-
-# REMOVE_START
-r.delete(
-    "thermometer:1", "thermometer:2", "thermometer:3",
-    "rg:1", "rg:2", "rg:3", "rg:4",
-    "sensor3",
-    "wind:1", "wind:2", "wind:3", "wind:4",
-    "hyg:1", "hyg:compacted"
-)
-# REMOVE_END
-
-# STEP_START create
-res1 = r.ts().create("thermometer:1")
-print(res1)  # >>> True
-
-res2 = r.type("thermometer:1")
-print(res2)  # >>> TSDB-TYPE
-
-res3 = r.ts().info("thermometer:1")
-print(res3)
-# >>> {'rules': [], ... 'total_samples': 0, ...
-# STEP_END
-# REMOVE_START
-assert res1 is True
-assert res2 == "TSDB-TYPE"
-assert res3["total_samples"] == 0
-# REMOVE_END
-
-# STEP_START create_retention
-res4 = r.ts().add("thermometer:2", 1, 10.8, retention_msecs=100)
-print(res4)  # >>> 1
-
-res5 = r.ts().info("thermometer:2")
-print(res5)
-# >>> {'rules': [], ... 'retention_msecs': 100, ...
-# STEP_END
-# REMOVE_START
-assert res4 == 1
-assert res5["retention_msecs"] == 100
-# REMOVE_END
-
-# STEP_START create_labels
-res6 = r.ts().create(
-    "thermometer:3", 1, 10.4,
-    labels={"location": "UK", "type": "Mercury"}
-)
-print(res6)  # >>> 1
-
-res7 = r.ts().info("thermometer:3")
-print(res7)
-# >>> {'rules': [], ... 'labels': {'location': 'UK', 'type': 'Mercury'}, ...
-# STEP_END
-# REMOVE_START
-assert res6 == 1
-assert res7["labels"] == {"location": "UK", "type": "Mercury"}
-# REMOVE_END
-
-# STEP_START madd
-res8 = r.ts().madd([
-    ("thermometer:1", 1, 9.2),
-    ("thermometer:1", 2, 9.9),
-    ("thermometer:2", 2, 10.3)
-])
-print(res8)  # >>> [1, 2, 2]
-# STEP_END
-# REMOVE_START
-assert res8 == [1, 2, 2]
-# REMOVE_END
-
-# STEP_START get
-# The last recorded temperature for thermometer:2
-# was 10.3 at time 2.
-res9 = r.ts().get("thermometer:2")
-print(res9)  # >>> (2, 10.3)
-# STEP_END
-# REMOVE_START
-assert res9 == (2, 10.3)
-# REMOVE_END
-
-# STEP_START range
-# Add 5 data points to a time series named "rg:1".
-res10 = r.ts().create("rg:1")
-print(res10)  # >>> True
-
-res11 = r.ts().madd([
-        ("rg:1", 0, 18),
-        ("rg:1", 1, 14),
-        ("rg:1", 2, 22),
-        ("rg:1", 3, 18),
-        ("rg:1", 4, 24),
-])
-print(res11)  # >>> [0, 1, 2, 3, 4]
-
-# Retrieve all the data points in ascending order.
-res12 = r.ts().range("rg:1", "-", "+")
-print(res12)  # >>> [(0, 18.0), (1, 14.0), (2, 22.0), (3, 18.0), (4, 24.0)]
-
-# Retrieve data points up to time 1 (inclusive).
-res13 = r.ts().range("rg:1", "-", 1)
-print(res13)  # >>> [(0, 18.0), (1, 14.0)]
-
-# Retrieve data points from time 3 onwards.
-res14 = r.ts().range("rg:1", 3, "+")
-print(res14)  # >>> [(3, 18.0), (4, 24.0)]
-
-# Retrieve all the data points in descending order.
-res15 = r.ts().revrange("rg:1", "-", "+")
-print(res15)  # >>> [(4, 24.0), (3, 18.0), (2, 22.0), (1, 14.0), (0, 18.0)]
-
-# Retrieve data points up to time 1 (inclusive), but return them
-# in descending order.
-res16 = r.ts().revrange("rg:1", "-", 1)
-print(res16)  # >>> [(1, 14.0), (0, 18.0)]
-# STEP_END
-# REMOVE_START
-assert res10 is True
-assert res11 == [0, 1, 2, 3, 4]
-assert res12 == [(0, 18.0), (1, 14.0), (2, 22.0), (3, 18.0), (4, 24.0)]
-assert res13 == [(0, 18.0), (1, 14.0)]
-assert res14 == [(3, 18.0), (4, 24.0)]
-assert res15 == [(4, 24.0), (3, 18.0), (2, 22.0), (1, 14.0), (0, 18.0)]
-assert res16 == [(1, 14.0), (0, 18.0)]
-# REMOVE_END
-
-# STEP_START range_filter
-res17 = r.ts().range("rg:1", "-", "+", filter_by_ts=[0, 2, 4])
-print(res17)  # >>> [(0, 18.0), (2, 22.0), (4, 24.0)]
-
-res18 = r.ts().revrange(
-    "rg:1", "-", "+",
-    filter_by_ts=[0, 2, 4],
-    filter_by_min_value=20,
-    filter_by_max_value=25,
-)
-print(res18)  # >>> [(4, 24.0), (2, 22.0)]
-
-res19 = r.ts().revrange(
-    "rg:1", "-", "+",
-    filter_by_ts=[0, 2, 4],
-    filter_by_min_value=22,
-    filter_by_max_value=22,
-    count=1,
-)
-print(res19)  # >>> [(2, 22.0)]
-# STEP_END
-# REMOVE_START
-assert res17 == [(0, 18.0), (2, 22.0), (4, 24.0)]
-assert res18 == [(4, 24.0), (2, 22.0)]
-assert res19 == [(2, 22.0)]
-# REMOVE_END
-
-# STEP_START query_multi
-# Create three new "rg:" time series (two in the US
-# and one in the UK, with different units) and add some
-# data points.
-res20 = r.ts().create(
-    "rg:2",
-    labels={"location": "us", "unit": "cm"},
-)
-print(res20)  # >>> True
-
-res21 = r.ts().create(
-    "rg:3",
-    labels={"location": "us", "unit": "in"},
-)
-print(res21)  # >>> True
-
-res22 = r.ts().create(
-    "rg:4",
-    labels={"location": "uk", "unit": "mm"},
-)
-print(res22)  # >>> True
-
-res23 = r.ts().madd([
-        ("rg:2", 0, 1.8),
-        ("rg:3", 0, 0.9),
-        ("rg:4", 0, 25),
-])
-print(res23)  # >>> [0, 0, 0]
-
-res24 = r.ts().madd([
-        ("rg:2", 1, 2.1),
-        ("rg:3", 1, 0.77),
-        ("rg:4", 1, 18),
-])
-print(res24)  # >>> [1, 1, 1]
-
-res25 = r.ts().madd([
-        ("rg:2", 2, 2.3),
-        ("rg:3", 2, 1.1),
-        ("rg:4", 2, 21),
-])
-print(res25)  # >>> [2, 2, 2]
-
-res26 = r.ts().madd([
-        ("rg:2", 3, 1.9),
-        ("rg:3", 3, 0.81),
-        ("rg:4", 3, 19),
-])
-print(res26)  # >>> [3, 3, 3]
-
-res27 = r.ts().madd([
-        ("rg:2", 4, 1.78),
-        ("rg:3", 4, 0.74),
-        ("rg:4", 4, 23),
-])
-print(res27)  # >>> [4, 4, 4]
-
-# Retrieve the last data point from each US time series. If
-# you don't specify any labels, an empty array is returned
-# for the labels.
-res28 = r.ts().mget(["location=us"])
-print(res28)  # >>> [{'rg:2': [{}, 4, 1.78]}, {'rg:3': [{}, 4, 0.74]}]
-
-# Retrieve the same data points, but include the `unit`
-# label in the results.
-res29 = r.ts().mget(["location=us"], select_labels=["unit"])
-print(res29)  # >>> [{'unit': 'cm'}, (4, 1.78), {'unit': 'in'}, (4, 0.74)]
-
-# Retrieve data points up to time 2 (inclusive) from all
-# time series that use millimeters as the unit. Include all
-# labels in the results.
-res30 = r.ts().mrange(
-    "-", 2, filters=["unit=mm"], with_labels=True
-)
-print(res30)
-# >>> [{'rg:4': [{'location': 'uk', 'unit': 'mm'}, [(0, 25.4),...
-
-# Retrieve data points from time 1 to time 3 (inclusive) from
-# all time series that use centimeters or millimeters as the unit,
-# but only return the `location` label. Return the results
-# in descending order of timestamp.
-res31 = r.ts().mrevrange(
-    1, 3, filters=["unit=(cm,mm)"], select_labels=["location"]
-)
-print(res31)
-# >>> [[{'location': 'uk'}, (3, 19.0), (2, 21.0), (1, 18.0)],...
-# STEP_END
-# REMOVE_START
-assert res20 is True
-assert res21 is True
-assert res22 is True
-assert res23 == [0, 0, 0]
-assert res24 == [1, 1, 1]
-assert res25 == [2, 2, 2]
-assert res26 == [3, 3, 3]
-assert res27 == [4, 4, 4]
-assert res28 == [{'rg:2': [{}, 4, 1.78]}, {'rg:3': [{}, 4, 0.74]}]
-assert res29 == [
-    {'rg:2': [{'unit': 'cm'}, 4, 1.78]},
-    {'rg:3': [{'unit': 'in'}, 4, 0.74]}
-]
-assert res30 == [
-    {
-        'rg:4': [
-            {'location': 'uk', 'unit': 'mm'},
-            [(0, 25), (1, 18.0), (2, 21.0)]
-        ]
-    }
-]
-assert res31 == [
-    {'rg:2': [{'location': 'us'}, [(3, 1.9), (2, 2.3), (1, 2.1)]]},
-    {'rg:4': [{'location': 'uk'}, [(3, 19.0), (2, 21.0), (1, 18.0)]]}
-]
-# REMOVE_END
-
-# STEP_START agg
-res32 = r.ts().range(
-    "rg:2", "-", "+",
-    aggregation_type="avg",
-    bucket_size_msec=2
-)
-print(res32)
-# >>> [(0, 1.9500000000000002), (2, 2.0999999999999996), (4, 1.78)]
-# STEP_END
-# REMOVE_START
-assert res32 == [
-    (0, 1.9500000000000002), (2, 2.0999999999999996),
-    (4, 1.78)
-]
-# REMOVE_END
-
-# STEP_START agg_bucket
-res33 = r.ts().create("sensor3")
-print(res33)  # >>> True
-
-res34 = r.ts().madd([
-    ("sensor3", 10, 1000),
-    ("sensor3", 20, 2000),
-    ("sensor3", 30, 3000),
-    ("sensor3", 40, 4000),
-    ("sensor3", 50, 5000),
-    ("sensor3", 60, 6000),
-    ("sensor3", 70, 7000),
-])
-print(res34)  # >>> [10, 20, 30, 40, 50, 60, 70]
-
-res35 = r.ts().range(
-    "sensor3", 10, 70,
-    aggregation_type="min",
-    bucket_size_msec=25
-)
-print(res35)
-# >>> [(0, 1000.0), (25, 3000.0), (50, 5000.0)]
-# STEP_END
-# REMOVE_START
-assert res33 is True
-assert res34 == [10, 20, 30, 40, 50, 60, 70]
-assert res35 == [(0, 1000.0), (25, 3000.0), (50, 5000.0)]
-# REMOVE_END
-
-# STEP_START agg_align
-res36 = r.ts().range(
-    "sensor3", 10, 70,
-    aggregation_type="min",
-    bucket_size_msec=25,
-    align="START"
-)
-print(res36)
-# >>> [(10, 1000.0), (35, 4000.0), (60, 6000.0)]
-# STEP_END
-# REMOVE_START
-assert res36 == [(10, 1000.0), (35, 4000.0), (60, 6000.0)]
-# REMOVE_END
-
-# STEP_START agg_multi
-res37 = r.ts().create(
-    "wind:1",
-    labels={"country": "uk"}
-)
-print(res37)  # >>> True
-
-res38 = r.ts().create(
-    "wind:2",
-    labels={"country": "uk"}
-)
-print(res38)  # >>> True
-
-res39 = r.ts().create(
-    "wind:3",
-    labels={"country": "us"}
-)
-print(res39)  # >>> True
-
-res40 = r.ts().create(
-    "wind:4",
-    labels={"country": "us"}
-)
-print(res40)  # >>> True
-
-res41 = r.ts().madd([
-        ("wind:1", 1, 12),
-        ("wind:2", 1, 18),
-        ("wind:3", 1, 5),
-        ("wind:4", 1, 20),
-])
-print(res41)  # >>> [1, 1, 1, 1]
-
-res42 = r.ts().madd([
-        ("wind:1", 2, 14),
-        ("wind:2", 2, 21),
-        ("wind:3", 2, 4),
-        ("wind:4", 2, 25),
-])
-print(res42)  # >>> [2, 2, 2, 2]
-
-res43 = r.ts().madd([
-        ("wind:1", 3, 10),
-        ("wind:2", 3, 24),
-        ("wind:3", 3, 8),
-        ("wind:4", 3, 18),
-])
-print(res43)  # >>> [3, 3, 3, 3]
-
-# The result pairs contain the timestamp and the maximum sample value
-# for the country at that timestamp.
-res44 = r.ts().mrange(
-    "-", "+",
-    filters=["country=(us,uk)"],
-    groupby="country",
-    reduce="max"
-)
-print(res44)
-# >>> [{'country=uk': [{}, [(1, 18.0), (2, 21.0), (3, 24.0)]]}, ...
-
-# The result pairs contain the timestamp and the average sample value
-# for the country at that timestamp.
-res45 = r.ts().mrange(
-    "-", "+",
-    filters=["country=(us,uk)"],
-    groupby="country",
-    reduce="avg"
-)
-print(res45)
-# >>> [{'country=uk': [{}, [(1, 15.0), (2, 17.5), (3, 17.0)]]}, ...
-# STEP_END
-# REMOVE_START
-assert res37 is True
-assert res38 is True
-assert res39 is True
-assert res40 is True
-assert res41 == [1, 1, 1, 1]
-assert res42 == [2, 2, 2, 2]
-assert res43 == [3, 3, 3, 3]
-assert res44 == [
-    {'country=uk': [{}, [(1, 18.0), (2, 21.0), (3, 24.0)]]},
-    {'country=us': [{}, [(1, 20.0), (2, 25.0), (3, 18.0)]]}
-]
-assert res45 == [
-    {'country=uk': [{}, [(1, 15.0), (2, 17.5), (3, 17.0)]]},
-    {'country=us': [{}, [(1, 12.5), (2, 14.5), (3, 13.0)]]}
-]
-# REMOVE_END
-
-# STEP_START create_compaction
-res45 = r.ts().create("hyg:1")
-print(res45)  # >>> True
-
-res46 = r.ts().create("hyg:compacted")
-print(res46)  # >>> True
-
-res47 = r.ts().createrule("hyg:1", "hyg:compacted", "min", 3)
-print(res47)  # >>> True
-
-res48 = r.ts().info("hyg:1")
-print(res48.rules)
-# >>> [['hyg:compacted', 3, 'MIN', 0]]
-
-res49 = r.ts().info("hyg:compacted")
-print(res49.source_key)  # >>> 'hyg:1'
-# STEP_END
-# REMOVE_START
-assert res45 is True
-assert res46 is True
-assert res47 is True
-assert res48.rules == [['hyg:compacted', 3, 'MIN', 0]]
-assert res49.source_key == 'hyg:1'
-# REMOVE_END
-
-# STEP_START comp_add
-res50 = r.ts().madd([
-    ("hyg:1", 0, 75),
-    ("hyg:1", 1, 77),
-    ("hyg:1", 2, 78),
-])
-print(res50)  # >>> [0, 1, 2]
-
-res51 = r.ts().range("hyg:compacted", "-", "+")
-print(res51)  # >>> []
-
-res52 = r.ts().add("hyg:1", 3, 79)
-print(res52)  # >>> 3
-
-res53 = r.ts().range("hyg:compacted", "-", "+")
-print(res53)  # >>> [(0, 75.0)]
-# STEP_END
-# REMOVE_START
-assert res50 == [0, 1, 2]
-assert res51 == []
-assert res52 == 3
-assert res53 == [(0, 75.0)]
-# REMOVE_END
-
-# STEP_START del
-res54 = r.ts().info("thermometer:1")
-print(res54.total_samples)  # >>> 2
-print(res54.first_timestamp)  # >>> 1
-print(res54.last_timestamp)  # >>> 2
-
-res55 = r.ts().add("thermometer:1", 3, 9.7)
-print(res55)  # >>> 3
-
-res56 = r.ts().info("thermometer:1")
-print(res56.total_samples)  # >>> 3
-print(res56.first_timestamp)  # >>> 1
-print(res56.last_timestamp)  # >>> 3
-
-res57 = r.ts().delete("thermometer:1", 1, 2)
-print(res57)  # >>> 2
-
-res58 = r.ts().info("thermometer:1")
-print(res58.total_samples)  # >>> 1
-print(res58.first_timestamp)  # >>> 3
-print(res58.last_timestamp)  # >>> 3
-
-res59 = r.ts().delete("thermometer:1", 3, 3)
-print(res59)  # >>> 1
-
-res60 = r.ts().info("thermometer:1")
-print(res60.total_samples)  # >>> 0
-# STEP_END
-# REMOVE_START
-assert res54.total_samples == 2
-assert res54.first_timestamp == 1
-assert res54.last_timestamp == 2
-assert res55 == 3
-assert res56.total_samples == 3
-assert res56.first_timestamp == 1
-assert res56.last_timestamp == 3
-assert res57 == 2
-assert res58.total_samples == 1
-assert res58.first_timestamp == 3
-assert res58.last_timestamp == 3
-assert res59 == 1
-assert res60.total_samples == 0
-# REMOVE_END
