diff --git a/coverage/coverage.out b/coverage/coverage.out index 3923611..abc2a7a 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -216,41 +216,41 @@ github.com/echovault/echovault/pkg/echovault/api_hash.go:161.2,161.41 1 0 github.com/echovault/echovault/pkg/echovault/api_list.go:23.56,26.16 3 1 github.com/echovault/echovault/pkg/echovault/api_list.go:26.16,28.3 1 1 github.com/echovault/echovault/pkg/echovault/api_list.go:29.2,29.41 1 1 -github.com/echovault/echovault/pkg/echovault/api_list.go:32.79,39.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:39.16,41.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:42.2,42.45 1 0 +github.com/echovault/echovault/pkg/echovault/api_list.go:32.79,39.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:39.16,41.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:42.2,42.45 1 1 github.com/echovault/echovault/pkg/echovault/api_list.go:45.72,48.16 2 1 -github.com/echovault/echovault/pkg/echovault/api_list.go:48.16,50.3 1 0 +github.com/echovault/echovault/pkg/echovault/api_list.go:48.16,50.3 1 1 github.com/echovault/echovault/pkg/echovault/api_list.go:51.2,51.40 1 1 -github.com/echovault/echovault/pkg/echovault/api_list.go:54.84,57.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:57.16,59.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:60.2,60.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:63.80,69.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:69.16,71.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:72.2,72.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:75.84,81.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:81.16,83.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:84.2,84.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:87.96,93.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:93.16,95.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:96.2,96.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:99.59,101.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:101.16,103.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:104.2,104.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:107.59,109.16 2 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:109.16,111.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:112.2,112.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:115.78,118.16 3 0 +github.com/echovault/echovault/pkg/echovault/api_list.go:54.84,57.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:57.16,59.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:60.2,60.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:63.80,69.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:69.16,71.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:72.2,72.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:75.84,81.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:81.16,83.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:84.2,84.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:87.96,93.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:93.16,95.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:96.2,96.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:99.59,101.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:101.16,103.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:104.2,104.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:107.59,109.16 2 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:109.16,111.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:112.2,112.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:115.78,118.16 3 1 github.com/echovault/echovault/pkg/echovault/api_list.go:118.16,120.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:121.2,121.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:124.79,127.16 3 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:127.16,129.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:130.2,130.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:133.78,136.16 3 0 +github.com/echovault/echovault/pkg/echovault/api_list.go:121.2,121.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:124.79,127.16 3 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:127.16,129.3 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:130.2,130.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:133.78,136.16 3 1 github.com/echovault/echovault/pkg/echovault/api_list.go:136.16,138.3 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:139.2,139.40 1 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:142.79,145.16 3 0 -github.com/echovault/echovault/pkg/echovault/api_list.go:145.16,147.3 1 0 +github.com/echovault/echovault/pkg/echovault/api_list.go:139.2,139.40 1 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:142.79,145.16 3 1 +github.com/echovault/echovault/pkg/echovault/api_list.go:145.16,147.3 1 1 github.com/echovault/echovault/pkg/echovault/api_list.go:148.2,148.40 1 0 github.com/echovault/echovault/pkg/echovault/api_pubsub.go:33.87,35.18 1 0 github.com/echovault/echovault/pkg/echovault/api_pubsub.go:35.18,37.3 1 0 @@ -693,14 +693,14 @@ github.com/echovault/echovault/pkg/echovault/echovault.go:480.2,480.12 1 0 github.com/echovault/echovault/pkg/echovault/echovault.go:483.37,484.26 1 0 github.com/echovault/echovault/pkg/echovault/echovault.go:484.26,487.3 2 0 github.com/echovault/echovault/pkg/echovault/echovault.go:490.45,507.2 2 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:34.81,37.34 2 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:37.34,40.3 2 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:42.2,42.6 1 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:42.6,43.10 1 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:44.11,45.35 1 0 +github.com/echovault/echovault/pkg/echovault/keyspace.go:34.81,37.34 2 1 +github.com/echovault/echovault/pkg/echovault/keyspace.go:37.34,40.3 2 1 +github.com/echovault/echovault/pkg/echovault/keyspace.go:42.2,42.6 1 1 +github.com/echovault/echovault/pkg/echovault/keyspace.go:42.6,43.10 1 1 +github.com/echovault/echovault/pkg/echovault/keyspace.go:44.11,45.35 1 1 github.com/echovault/echovault/pkg/echovault/keyspace.go:45.35,47.5 1 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:48.4,49.10 2 0 -github.com/echovault/echovault/pkg/echovault/keyspace.go:49.10,51.5 1 0 +github.com/echovault/echovault/pkg/echovault/keyspace.go:48.4,49.10 2 1 +github.com/echovault/echovault/pkg/echovault/keyspace.go:49.10,51.5 1 1 github.com/echovault/echovault/pkg/echovault/keyspace.go:52.21,53.36 1 0 github.com/echovault/echovault/pkg/echovault/keyspace.go:58.67,59.39 1 1 github.com/echovault/echovault/pkg/echovault/keyspace.go:59.39,61.3 1 1 @@ -873,14 +873,14 @@ github.com/echovault/echovault/pkg/echovault/modules.go:68.2,68.38 1 1 github.com/echovault/echovault/pkg/echovault/modules.go:68.38,70.87 1 0 github.com/echovault/echovault/pkg/echovault/modules.go:70.87,72.4 1 0 github.com/echovault/echovault/pkg/echovault/modules.go:76.2,76.50 1 1 -github.com/echovault/echovault/pkg/echovault/modules.go:76.50,77.7 1 0 -github.com/echovault/echovault/pkg/echovault/modules.go:77.7,78.42 1 0 -github.com/echovault/echovault/pkg/echovault/modules.go:78.42,80.10 2 0 +github.com/echovault/echovault/pkg/echovault/modules.go:76.50,77.7 1 1 +github.com/echovault/echovault/pkg/echovault/modules.go:77.7,78.42 1 1 +github.com/echovault/echovault/pkg/echovault/modules.go:78.42,80.10 2 1 github.com/echovault/echovault/pkg/echovault/modules.go:85.2,85.43 1 1 github.com/echovault/echovault/pkg/echovault/modules.go:85.43,87.17 2 1 github.com/echovault/echovault/pkg/echovault/modules.go:87.17,89.4 1 1 github.com/echovault/echovault/pkg/echovault/modules.go:91.3,91.62 1 1 -github.com/echovault/echovault/pkg/echovault/modules.go:91.62,93.4 1 0 +github.com/echovault/echovault/pkg/echovault/modules.go:91.62,93.4 1 1 github.com/echovault/echovault/pkg/echovault/modules.go:95.3,97.18 2 1 github.com/echovault/echovault/pkg/echovault/modules.go:101.2,101.32 1 0 github.com/echovault/echovault/pkg/echovault/modules.go:101.32,104.17 3 0 @@ -889,276 +889,82 @@ github.com/echovault/echovault/pkg/echovault/modules.go:107.3,107.18 1 0 github.com/echovault/echovault/pkg/echovault/modules.go:111.2,111.34 1 0 github.com/echovault/echovault/pkg/echovault/modules.go:111.34,114.3 2 0 github.com/echovault/echovault/pkg/echovault/modules.go:116.2,116.72 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:30.105,32.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:32.16,34.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:36.2,39.25 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:39.25,41.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:43.2,43.38 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:43.38,45.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:47.2,47.33 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:47.33,49.17 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:49.17,51.4 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:52.3,53.59 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:53.59,55.4 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:56.3,56.59 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:59.2,59.51 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:59.51,61.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:62.2,65.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:65.9,67.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:69.2,70.36 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:70.36,71.42 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:71.42,72.26 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:72.26,75.5 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:76.4,76.12 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:78.3,79.13 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:81.2,81.55 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:81.55,83.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:85.2,85.51 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:88.105,90.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:90.16,92.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:94.2,97.33 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:97.33,99.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:101.2,101.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:101.52,103.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:104.2,107.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:107.9,109.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:111.2,114.31 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:114.31,116.19 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:116.19,118.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:120.3,120.34 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:120.34,122.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:124.3,124.31 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:124.31,126.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:128.3,128.35 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:128.35,131.12 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:133.3,133.32 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:136.2,136.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:139.111,141.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:141.16,143.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:145.2,148.33 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:148.33,150.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:152.2,152.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:152.52,154.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:155.2,158.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:158.9,160.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:162.2,165.31 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:165.31,167.19 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:167.19,169.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:171.3,171.34 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:171.34,173.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:175.3,175.35 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:175.35,178.12 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:180.3,180.31 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:180.31,182.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:184.3,184.18 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:187.2,187.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:190.109,192.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:192.16,194.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:196.2,198.33 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:198.33,200.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:202.2,202.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:202.52,204.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:205.2,208.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:208.9,210.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:212.2,213.27 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:213.27,214.32 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:214.32,216.12 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:218.3,218.33 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:218.33,221.12 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:223.3,223.29 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:223.29,225.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:228.2,228.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:231.114,233.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:233.16,235.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:237.2,240.19 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:240.19,242.17 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:242.17,244.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:245.3,245.13 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:245.13,247.4 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:248.3,248.12 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:251.2,252.19 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:252.19,253.46 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:253.46,255.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:255.9,257.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:260.2,260.33 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:260.33,262.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:264.2,264.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:264.52,266.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:267.2,270.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:270.9,272.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:275.2,275.24 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:275.24,277.17 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:277.17,279.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:280.3,280.34 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:280.34,282.18 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:282.18,283.36 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:283.36,285.14 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:287.5,287.37 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:287.37,290.14 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:292.5,292.33 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:292.33,294.14 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:298.3,298.26 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:302.2,303.29 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:303.29,305.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:308.2,310.46 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:310.46,314.16 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:314.16,315.59 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:315.59,317.5 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:321.2,322.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:322.16,324.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:325.2,325.38 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:325.38,327.17 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:327.17,328.41 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:328.41,330.13 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:332.4,332.42 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:332.42,335.13 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:337.4,337.38 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:337.38,339.13 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:344.2,344.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:347.108,349.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:349.16,351.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:353.2,355.33 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:355.33,357.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:359.2,359.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:359.52,361.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:362.2,365.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:365.9,367.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:369.2,369.55 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:372.109,374.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:374.16,376.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:378.2,380.33 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:380.33,382.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:384.2,384.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:384.52,386.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:387.2,390.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:390.9,392.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:394.2,395.29 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:395.29,397.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:399.2,399.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:402.111,404.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:404.16,406.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:408.2,414.47 5 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:414.47,416.17 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:416.17,418.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:419.3,419.21 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:420.8,422.17 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:422.17,424.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:425.3,425.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:428.2,428.33 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:428.33,429.62 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:429.62,431.4 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:432.3,434.48 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:434.48,436.57 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:436.57,438.5 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:439.4,439.96 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:440.9,442.57 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:442.57,444.5 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:445.4,445.60 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:449.2,449.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:449.52,451.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:452.2,455.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:455.9,457.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:459.2,459.24 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:459.24,461.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:463.2,463.28 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:464.10,465.69 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:466.11,468.48 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:468.48,470.4 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:470.9,472.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:473.15,475.48 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:475.48,477.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:477.9,479.4 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:482.2,482.55 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:482.55,484.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:486.2,486.40 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:486.40,488.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:490.2,491.47 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:494.111,496.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:496.16,498.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:500.2,502.33 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:502.33,504.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:506.2,506.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:506.52,508.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:509.2,512.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:512.9,514.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:516.2,517.33 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:517.33,519.34 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:519.34,521.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:522.3,522.35 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:522.35,525.4 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:526.3,526.31 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:526.31,528.4 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:531.2,531.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:534.111,536.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:536.16,538.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:540.2,543.33 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:543.33,545.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:547.2,547.52 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:547.52,549.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:550.2,553.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:553.9,555.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:557.2,557.24 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:557.24,559.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:561.2,561.30 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:564.108,566.16 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:566.16,568.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:570.2,573.33 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:573.33,575.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:577.2,577.51 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:577.51,579.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:580.2,583.9 3 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:583.9,585.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:587.2,589.31 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:589.31,590.25 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:590.25,593.4 2 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:596.2,596.55 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:596.55,598.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/commands.go:600.2,600.51 1 1 -github.com/echovault/echovault/pkg/modules/hash/commands.go:603.33,724.2 1 0 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:22.50,23.18 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:23.18,25.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:26.2,26.22 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:29.52,30.18 1 0 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:30.18,32.3 1 0 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:33.2,33.22 1 0 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:36.50,37.18 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:37.18,39.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:40.2,40.22 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:43.53,44.18 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:44.18,46.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:47.2,47.22 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:50.51,51.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:51.19,53.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:54.2,54.21 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:57.56,58.34 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:58.34,60.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.2,61.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.19,63.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:64.2,64.22 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:67.50,68.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:68.19,70.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:71.2,71.21 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:74.51,75.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:75.19,77.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:78.2,78.21 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:81.53,82.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:82.19,84.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:85.2,85.22 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:88.53,89.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:89.19,91.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:92.2,92.21 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:95.53,96.19 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:96.19,98.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:99.2,99.22 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:102.50,103.18 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:103.18,105.3 1 1 -github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:106.2,106.22 1 1 -github.com/echovault/echovault/pkg/modules/connection/commands.go:25.108,26.18 1 1 -github.com/echovault/echovault/pkg/modules/connection/commands.go:27.10,28.50 1 1 -github.com/echovault/echovault/pkg/modules/connection/commands.go:29.9,30.34 1 1 -github.com/echovault/echovault/pkg/modules/connection/commands.go:31.9,32.72 1 1 -github.com/echovault/echovault/pkg/modules/connection/commands.go:36.33,44.60 1 0 -github.com/echovault/echovault/pkg/modules/connection/commands.go:44.60,46.5 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:28.115,34.29 4 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:34.29,35.54 1 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:35.54,41.42 4 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:41.42,43.5 1 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:45.4,48.12 3 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:51.3,51.36 1 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:51.36,58.43 5 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:58.43,60.5 1 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:62.4,64.21 2 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:68.2,70.25 2 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:73.109,77.35 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:77.35,78.65 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:78.65,79.41 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:79.41,81.5 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:82.4,82.12 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:84.3,84.13 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:87.2,87.51 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:90.110,91.18 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:92.9,97.36 4 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:97.36,98.66 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:98.66,99.52 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:99.52,103.6 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:104.5,104.13 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:106.4,107.14 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:109.3,110.26 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:112.9,116.45 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:116.45,118.4 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:119.3,119.42 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:119.42,123.37 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:123.37,124.67 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:124.67,125.53 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:125.53,126.59 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:126.59,130.8 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:132.6,132.14 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:134.5,134.54 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:134.54,137.6 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:139.9,139.50 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:139.50,143.37 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:143.37,144.67 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:144.67,145.53 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:145.53,147.24 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:147.24,150.8 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:152.6,152.14 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:154.5,154.33 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:154.33,157.6 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:159.9,159.49 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:159.49,163.37 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:163.37,164.67 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:164.67,165.53 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:165.53,166.55 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:166.55,170.8 3 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:172.6,172.14 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:174.5,174.50 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:174.50,177.6 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:179.9,181.4 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:182.3,183.26 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:184.10,185.50 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:189.103,191.2 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:193.33,201.60 1 1 +github.com/echovault/echovault/pkg/modules/admin/commands.go:201.60,201.86 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:210.60,212.5 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:220.62,220.88 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:229.62,229.88 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:239.62,239.88 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:250.60,252.5 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:253.113,254.49 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:254.49,256.6 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:257.5,257.41 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:266.60,268.5 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:269.113,271.18 2 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:271.18,273.6 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:274.5,274.53 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:283.60,285.5 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:286.113,287.47 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:287.47,289.6 1 0 +github.com/echovault/echovault/pkg/modules/admin/commands.go:290.5,290.41 1 0 github.com/echovault/echovault/pkg/modules/acl/commands.go:33.108,34.34 1 1 github.com/echovault/echovault/pkg/modules/acl/commands.go:34.34,36.3 1 1 github.com/echovault/echovault/pkg/modules/acl/commands.go:37.2,38.9 2 1 @@ -1617,82 +1423,276 @@ github.com/echovault/echovault/pkg/modules/generic/utils.go:106.3,108.17 3 1 github.com/echovault/echovault/pkg/modules/generic/utils.go:108.17,110.4 1 1 github.com/echovault/echovault/pkg/modules/generic/utils.go:111.3,112.46 2 1 github.com/echovault/echovault/pkg/modules/generic/utils.go:114.10,115.95 1 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:28.115,34.29 4 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:34.29,35.54 1 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:35.54,41.42 4 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:41.42,43.5 1 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:45.4,48.12 3 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:51.3,51.36 1 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:51.36,58.43 5 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:58.43,60.5 1 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:62.4,64.21 2 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:68.2,70.25 2 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:73.109,77.35 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:77.35,78.65 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:78.65,79.41 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:79.41,81.5 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:82.4,82.12 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:84.3,84.13 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:87.2,87.51 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:90.110,91.18 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:92.9,97.36 4 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:97.36,98.66 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:98.66,99.52 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:99.52,103.6 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:104.5,104.13 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:106.4,107.14 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:109.3,110.26 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:112.9,116.45 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:116.45,118.4 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:119.3,119.42 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:119.42,123.37 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:123.37,124.67 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:124.67,125.53 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:125.53,126.59 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:126.59,130.8 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:132.6,132.14 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:134.5,134.54 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:134.54,137.6 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:139.9,139.50 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:139.50,143.37 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:143.37,144.67 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:144.67,145.53 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:145.53,147.24 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:147.24,150.8 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:152.6,152.14 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:154.5,154.33 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:154.33,157.6 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:159.9,159.49 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:159.49,163.37 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:163.37,164.67 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:164.67,165.53 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:165.53,166.55 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:166.55,170.8 3 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:172.6,172.14 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:174.5,174.50 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:174.50,177.6 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:179.9,181.4 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:182.3,183.26 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:184.10,185.50 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:189.103,191.2 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:193.33,201.60 1 1 -github.com/echovault/echovault/pkg/modules/admin/commands.go:201.60,201.86 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:210.60,212.5 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:220.62,220.88 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:229.62,229.88 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:239.62,239.88 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:250.60,252.5 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:253.113,254.49 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:254.49,256.6 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:257.5,257.41 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:266.60,268.5 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:269.113,271.18 2 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:271.18,273.6 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:274.5,274.53 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:283.60,285.5 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:286.113,287.47 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:287.47,289.6 1 0 -github.com/echovault/echovault/pkg/modules/admin/commands.go:290.5,290.41 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:30.105,32.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:32.16,34.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:36.2,39.25 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:39.25,41.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:43.2,43.38 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:43.38,45.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:47.2,47.33 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:47.33,49.17 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:49.17,51.4 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:52.3,53.59 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:53.59,55.4 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:56.3,56.59 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:59.2,59.51 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:59.51,61.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:62.2,65.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:65.9,67.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:69.2,70.36 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:70.36,71.42 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:71.42,72.26 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:72.26,75.5 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:76.4,76.12 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:78.3,79.13 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:81.2,81.55 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:81.55,83.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:85.2,85.51 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:88.105,90.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:90.16,92.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:94.2,97.33 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:97.33,99.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:101.2,101.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:101.52,103.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:104.2,107.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:107.9,109.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:111.2,114.31 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:114.31,116.19 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:116.19,118.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:120.3,120.34 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:120.34,122.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:124.3,124.31 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:124.31,126.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:128.3,128.35 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:128.35,131.12 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:133.3,133.32 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:136.2,136.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:139.111,141.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:141.16,143.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:145.2,148.33 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:148.33,150.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:152.2,152.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:152.52,154.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:155.2,158.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:158.9,160.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:162.2,165.31 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:165.31,167.19 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:167.19,169.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:171.3,171.34 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:171.34,173.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:175.3,175.35 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:175.35,178.12 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:180.3,180.31 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:180.31,182.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:184.3,184.18 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:187.2,187.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:190.109,192.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:192.16,194.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:196.2,198.33 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:198.33,200.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:202.2,202.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:202.52,204.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:205.2,208.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:208.9,210.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:212.2,213.27 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:213.27,214.32 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:214.32,216.12 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:218.3,218.33 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:218.33,221.12 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:223.3,223.29 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:223.29,225.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:228.2,228.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:231.114,233.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:233.16,235.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:237.2,240.19 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:240.19,242.17 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:242.17,244.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:245.3,245.13 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:245.13,247.4 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:248.3,248.12 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:251.2,252.19 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:252.19,253.46 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:253.46,255.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:255.9,257.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:260.2,260.33 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:260.33,262.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:264.2,264.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:264.52,266.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:267.2,270.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:270.9,272.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:275.2,275.24 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:275.24,277.17 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:277.17,279.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:280.3,280.34 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:280.34,282.18 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:282.18,283.36 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:283.36,285.14 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:287.5,287.37 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:287.37,290.14 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:292.5,292.33 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:292.33,294.14 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:298.3,298.26 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:302.2,303.29 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:303.29,305.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:308.2,310.46 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:310.46,314.16 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:314.16,315.59 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:315.59,317.5 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:321.2,322.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:322.16,324.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:325.2,325.38 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:325.38,327.17 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:327.17,328.41 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:328.41,330.13 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:332.4,332.42 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:332.42,335.13 3 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:337.4,337.38 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:337.38,339.13 2 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:344.2,344.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:347.108,349.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:349.16,351.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:353.2,355.33 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:355.33,357.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:359.2,359.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:359.52,361.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:362.2,365.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:365.9,367.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:369.2,369.55 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:372.109,374.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:374.16,376.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:378.2,380.33 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:380.33,382.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:384.2,384.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:384.52,386.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:387.2,390.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:390.9,392.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:394.2,395.29 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:395.29,397.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:399.2,399.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:402.111,404.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:404.16,406.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:408.2,414.47 5 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:414.47,416.17 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:416.17,418.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:419.3,419.21 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:420.8,422.17 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:422.17,424.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:425.3,425.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:428.2,428.33 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:428.33,429.62 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:429.62,431.4 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:432.3,434.48 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:434.48,436.57 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:436.57,438.5 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:439.4,439.96 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:440.9,442.57 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:442.57,444.5 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:445.4,445.60 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:449.2,449.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:449.52,451.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:452.2,455.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:455.9,457.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:459.2,459.24 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:459.24,461.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:463.2,463.28 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:464.10,465.69 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:466.11,468.48 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:468.48,470.4 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:470.9,472.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:473.15,475.48 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:475.48,477.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:477.9,479.4 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:482.2,482.55 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:482.55,484.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:486.2,486.40 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:486.40,488.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:490.2,491.47 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:494.111,496.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:496.16,498.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:500.2,502.33 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:502.33,504.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:506.2,506.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:506.52,508.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:509.2,512.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:512.9,514.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:516.2,517.33 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:517.33,519.34 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:519.34,521.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:522.3,522.35 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:522.35,525.4 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:526.3,526.31 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:526.31,528.4 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:531.2,531.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:534.111,536.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:536.16,538.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:540.2,543.33 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:543.33,545.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:547.2,547.52 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:547.52,549.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:550.2,553.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:553.9,555.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:557.2,557.24 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:557.24,559.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:561.2,561.30 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:564.108,566.16 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:566.16,568.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:570.2,573.33 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:573.33,575.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:577.2,577.51 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:577.51,579.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:580.2,583.9 3 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:583.9,585.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:587.2,589.31 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:589.31,590.25 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:590.25,593.4 2 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:596.2,596.55 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:596.55,598.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/commands.go:600.2,600.51 1 1 +github.com/echovault/echovault/pkg/modules/hash/commands.go:603.33,724.2 1 0 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:22.50,23.18 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:23.18,25.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:26.2,26.22 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:29.52,30.18 1 0 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:30.18,32.3 1 0 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:33.2,33.22 1 0 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:36.50,37.18 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:37.18,39.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:40.2,40.22 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:43.53,44.18 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:44.18,46.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:47.2,47.22 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:50.51,51.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:51.19,53.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:54.2,54.21 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:57.56,58.34 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:58.34,60.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.2,61.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.19,63.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:64.2,64.22 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:67.50,68.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:68.19,70.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:71.2,71.21 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:74.51,75.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:75.19,77.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:78.2,78.21 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:81.53,82.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:82.19,84.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:85.2,85.22 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:88.53,89.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:89.19,91.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:92.2,92.21 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:95.53,96.19 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:96.19,98.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:99.2,99.22 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:102.50,103.18 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:103.18,105.3 1 1 +github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:106.2,106.22 1 1 +github.com/echovault/echovault/pkg/modules/connection/commands.go:25.108,26.18 1 1 +github.com/echovault/echovault/pkg/modules/connection/commands.go:27.10,28.50 1 1 +github.com/echovault/echovault/pkg/modules/connection/commands.go:29.9,30.34 1 1 +github.com/echovault/echovault/pkg/modules/connection/commands.go:31.9,32.72 1 1 +github.com/echovault/echovault/pkg/modules/connection/commands.go:36.33,44.60 1 0 +github.com/echovault/echovault/pkg/modules/connection/commands.go:44.60,46.5 1 0 github.com/echovault/echovault/pkg/modules/list/commands.go:29.105,31.16 2 1 github.com/echovault/echovault/pkg/modules/list/commands.go:31.16,33.3 1 1 github.com/echovault/echovault/pkg/modules/list/commands.go:35.2,37.33 2 1 @@ -1912,6 +1912,49 @@ github.com/echovault/echovault/pkg/modules/list/key_funcs.go:82.2,82.30 1 1 github.com/echovault/echovault/pkg/modules/list/key_funcs.go:85.51,86.19 1 1 github.com/echovault/echovault/pkg/modules/list/key_funcs.go:86.19,88.3 1 1 github.com/echovault/echovault/pkg/modules/list/key_funcs.go:89.2,89.38 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:27.113,29.9 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:29.9,31.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:33.2,35.24 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:35.24,37.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:39.2,42.17 3 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:45.115,47.9 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:47.9,49.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:51.2,55.66 3 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:58.108,60.9 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:60.9,62.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:63.2,63.19 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:63.19,65.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:66.2,67.38 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:70.113,71.18 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:71.18,73.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:75.2,76.9 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:76.9,78.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:80.2,81.19 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:81.19,83.3 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:85.2,85.38 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:88.109,90.9 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:90.9,92.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:93.2,94.49 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:97.112,99.9 2 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:99.9,101.3 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:102.2,102.36 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:105.33,113.60 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:113.60,115.21 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:115.21,117.6 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:118.5,118.24 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:128.60,130.21 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:130.21,132.6 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:133.5,133.24 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:143.60,145.22 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:145.22,147.6 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:148.5,148.33 1 1 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:160.60,163.5 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:174.60,177.5 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:186.60,186.86 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:187.101,189.5 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:199.62,199.88 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:208.62,208.88 1 0 +github.com/echovault/echovault/pkg/modules/pubsub/commands.go:218.62,218.85 1 0 github.com/echovault/echovault/pkg/modules/set/commands.go:28.108,30.16 2 1 github.com/echovault/echovault/pkg/modules/set/commands.go:30.16,32.3 1 1 github.com/echovault/echovault/pkg/modules/set/commands.go:34.2,38.33 3 1 @@ -2322,639 +2365,596 @@ github.com/echovault/echovault/pkg/modules/set/set.go:184.31,185.19 1 1 github.com/echovault/echovault/pkg/modules/set/set.go:186.9,187.17 1 1 github.com/echovault/echovault/pkg/modules/set/set.go:188.9,191.15 3 1 github.com/echovault/echovault/pkg/modules/set/set.go:192.10,195.28 3 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:27.113,29.9 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:29.9,31.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:33.2,35.24 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:35.24,37.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:39.2,42.17 3 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:45.115,47.9 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:47.9,49.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:51.2,55.66 3 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:58.108,60.9 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:60.9,62.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:63.2,63.19 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:63.19,65.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:66.2,67.38 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:70.113,71.18 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:71.18,73.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:75.2,76.9 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:76.9,78.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:80.2,81.19 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:81.19,83.3 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:85.2,85.38 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:88.109,90.9 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:90.9,92.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:93.2,94.49 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:97.112,99.9 2 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:99.9,101.3 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:102.2,102.36 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:105.33,113.60 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:113.60,115.21 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:115.21,117.6 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:118.5,118.24 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:128.60,130.21 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:130.21,132.6 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:133.5,133.24 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:143.60,145.22 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:145.22,147.6 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:148.5,148.33 1 1 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:160.60,163.5 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:174.60,177.5 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:186.60,186.86 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:187.101,189.5 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:199.62,199.88 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:208.62,208.88 1 0 -github.com/echovault/echovault/pkg/modules/pubsub/commands.go:218.62,218.85 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:31.108,33.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:33.16,35.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:37.2,46.32 7 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:46.32,47.29 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:47.29,48.9 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:50.3,50.44 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:51.15,52.74 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:52.74,54.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:55.16,56.25 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:57.12,58.25 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:62.2,62.66 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:62.66,64.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:66.2,68.52 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:68.52,69.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:69.15,70.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:72.3,73.23 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:74.11,75.64 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:76.15,78.49 2 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:78.49,84.5 2 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:85.4,85.49 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:85.49,91.5 2 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:92.16,97.6 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:98.12,103.6 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:108.2,108.27 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:108.27,110.34 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:110.34,111.70 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:111.70,114.61 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:114.61,116.6 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:117.5,117.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:119.4,119.70 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:119.70,123.36 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:123.36,125.6 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:126.5,126.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:128.4,128.39 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:128.39,130.13 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:132.4,132.41 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:132.41,135.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:135.25,137.6 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:138.5,138.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:140.4,140.55 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:144.2,144.32 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:144.32,147.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:147.17,149.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:150.3,152.10 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:152.10,154.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:155.3,156.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:156.17,158.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:160.3,160.18 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:160.18,163.4 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:165.3,165.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:169.2,169.60 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:169.60,171.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:172.2,175.54 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:175.54,177.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:179.2,179.63 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:182.109,184.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:184.16,186.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:187.2,189.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:189.33,191.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:193.2,193.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:193.52,195.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:196.2,199.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:199.9,201.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:203.2,203.63 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:206.110,208.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:208.16,210.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:212.2,215.43 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:216.10,217.60 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:218.14,219.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:219.40,221.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:221.9,223.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:224.15,226.21 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:227.11,229.21 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:232.2,233.43 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:234.10,235.60 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:236.14,237.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:237.40,239.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:239.9,241.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:242.15,244.21 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:245.11,247.21 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:250.2,250.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:250.33,252.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:254.2,254.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:254.52,256.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:257.2,260.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:260.9,262.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:264.2,265.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:265.33,266.47 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:266.47,268.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:271.2,271.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:274.113,276.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:276.16,278.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:280.2,284.33 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:284.33,286.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:288.2,288.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:288.52,290.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:291.2,294.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:294.9,296.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:298.2,301.38 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:301.38,302.45 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:302.45,304.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:307.2,309.28 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:309.28,311.72 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:311.72,313.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:316.2,316.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:319.109,321.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:321.16,323.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:325.2,325.63 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:325.63,327.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:328.2,328.49 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:328.49,330.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:332.2,333.15 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:333.15,334.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:334.34,335.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:335.14,337.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:342.2,342.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:342.37,345.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:346.2,346.56 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:346.56,348.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:349.2,351.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:351.9,353.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:356.2,358.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:358.33,359.38 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:359.38,360.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:362.3,363.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:363.17,365.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:366.3,368.10 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:368.10,370.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:371.3,371.27 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:374.2,379.34 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:379.34,380.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:380.20,382.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:382.9,384.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:387.2,389.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:392.114,394.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:394.16,396.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:398.2,401.15 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:401.15,402.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:402.34,403.14 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:403.14,405.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:410.2,410.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:410.37,413.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:414.2,414.56 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:414.56,416.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:417.2,419.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:419.9,421.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:423.2,425.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:425.33,426.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:426.37,427.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:427.58,429.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:430.4,431.11 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:431.11,433.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:434.4,434.28 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:438.2,440.40 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:440.40,441.60 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:441.60,443.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:444.8,445.69 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:445.69,447.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:449.2,451.63 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:451.63,453.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:455.2,455.64 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:458.111,460.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:460.16,462.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:464.2,468.43 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:469.10,470.55 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:471.14,472.57 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:472.57,474.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:474.9,474.64 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:474.64,476.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:476.9,478.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:479.15,481.23 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:482.11,484.23 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:487.2,487.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:487.33,490.61 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:490.61,492.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:493.3,493.114 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:493.114,495.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:496.3,497.99 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:500.2,500.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:500.51,502.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:503.2,505.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:505.9,507.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:508.2,514.23 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:514.23,516.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:517.2,518.74 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:521.110,523.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:523.16,525.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:527.2,528.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:32.108,34.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:34.16,36.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:38.2,47.32 7 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:47.32,48.29 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:48.29,49.9 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:51.3,51.44 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:52.15,53.74 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:53.74,55.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:56.16,57.25 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:58.12,59.25 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:63.2,63.66 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:63.66,65.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:67.2,69.52 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:69.52,70.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:70.15,71.12 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:73.3,74.23 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:75.11,76.64 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:77.15,79.49 2 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:79.49,85.5 2 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:86.4,86.49 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:86.49,92.5 2 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:93.16,98.6 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:99.12,104.6 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:109.2,109.27 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:109.27,111.34 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:111.34,112.70 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:112.70,115.61 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:115.61,117.6 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:118.5,118.13 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:120.4,120.70 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:120.70,124.36 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:124.36,126.6 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:127.5,127.13 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:129.4,129.39 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:129.39,131.13 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:133.4,133.41 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:133.41,136.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:136.25,138.6 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:139.5,139.13 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:141.4,141.55 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:145.2,145.32 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:145.32,148.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:148.17,150.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:151.3,153.10 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:153.10,155.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:156.3,157.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:157.17,159.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:161.3,161.18 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:161.18,164.4 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:166.3,166.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:170.2,170.60 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:170.60,172.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:173.2,176.54 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:176.54,178.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:180.2,180.63 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:183.109,185.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:185.16,187.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:188.2,190.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:190.33,192.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:194.2,194.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:194.52,196.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:197.2,200.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:200.9,202.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:204.2,204.63 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:207.110,209.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:209.16,211.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:213.2,216.43 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:217.10,218.60 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:219.14,220.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:220.40,222.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:222.9,224.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:225.15,227.32 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:228.11,230.32 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:233.2,234.43 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:235.10,236.60 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:237.14,238.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:238.40,240.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:240.9,242.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:243.15,245.32 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:246.11,248.32 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:251.2,251.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:251.33,253.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:255.2,255.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:255.52,257.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:258.2,261.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:261.9,263.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:265.2,266.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:266.33,267.47 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:267.47,269.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:272.2,272.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:275.110,277.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:277.16,279.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:281.2,285.33 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:285.33,287.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:289.2,289.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:289.52,291.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:292.2,295.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:295.9,297.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:299.2,302.38 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:302.38,303.45 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:303.45,305.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:308.2,310.28 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:310.28,312.81 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:312.81,314.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:317.2,317.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:320.109,322.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:322.16,324.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:326.2,326.63 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:326.63,328.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:329.2,329.49 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:329.49,331.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:333.2,334.15 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:334.15,335.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:335.34,336.14 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:336.14,338.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:343.2,343.37 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:343.37,346.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:347.2,347.56 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:347.56,349.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:350.2,352.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:352.9,354.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:357.2,359.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:359.33,360.38 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:360.38,361.12 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:363.3,364.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:364.17,366.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:367.3,369.10 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:369.10,371.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:372.3,372.27 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:375.2,380.34 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:380.34,381.20 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:381.20,383.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:383.9,385.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:388.2,390.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:393.114,395.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:395.16,397.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:399.2,402.15 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:402.15,403.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:403.34,404.14 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:404.14,406.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:411.2,411.37 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:411.37,414.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:415.2,415.56 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:415.56,417.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:418.2,420.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:420.9,422.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:424.2,426.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:426.33,427.37 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:427.37,428.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:428.58,430.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:431.4,432.11 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:432.11,434.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:435.4,435.28 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:439.2,441.40 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:441.40,442.60 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:442.60,444.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:445.8,446.69 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:446.69,448.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:450.2,452.63 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:452.63,454.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:456.2,456.64 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:459.111,461.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:461.16,463.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:465.2,469.43 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:470.10,471.55 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:472.14,473.57 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:473.57,475.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:475.9,475.64 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:475.64,477.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:477.9,479.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:480.15,482.34 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:483.11,485.34 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:488.2,488.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:488.33,491.61 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:491.61,493.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:494.3,498.17 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:498.17,500.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:501.3,502.99 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:505.2,505.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:505.51,507.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:508.2,510.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:510.9,512.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:513.2,519.23 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:519.23,521.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:522.2,523.74 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:526.110,528.16 2 1 github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:528.16,530.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:532.2,533.15 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:533.15,534.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:534.34,535.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:535.14,537.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:541.2,543.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:543.33,544.38 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:544.38,547.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:548.3,548.57 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:548.57,550.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:551.3,553.10 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:553.10,555.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:556.3,559.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:562.2,566.33 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:566.33,567.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:567.40,568.18 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:568.18,570.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:570.10,572.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:576.2,578.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:581.115,583.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:583.16,585.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:587.2,590.51 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:590.51,592.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:594.2,595.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:595.16,597.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:599.2,600.15 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:600.15,601.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:601.34,602.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:602.14,604.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:608.2,610.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:610.33,611.38 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:611.38,613.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:614.3,614.57 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:614.57,616.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:617.3,619.10 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:619.10,621.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:622.3,625.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:628.2,630.71 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:630.71,631.60 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:631.60,633.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:634.8,634.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:634.40,635.69 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:635.69,637.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:639.2,641.68 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:641.68,643.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:645.2,645.69 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:648.109,650.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:650.16,652.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:654.2,659.56 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:659.56,661.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:662.2,662.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:662.20,663.19 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:663.19,665.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:666.3,666.29 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:666.29,668.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:669.3,670.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:670.17,672.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:673.3,673.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:673.13,675.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:676.3,677.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:681.2,681.57 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:681.57,683.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:684.2,684.21 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:684.21,685.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:685.20,687.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:688.3,689.53 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:689.53,691.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:694.2,694.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:694.33,695.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:695.37,696.57 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:696.57,697.13 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:699.4,700.35 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:700.35,702.13 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:704.4,705.18 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:705.18,708.5 2 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:709.4,713.38 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:713.38,715.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:717.4,719.27 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:723.2,723.30 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:726.108,728.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:728.16,730.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:732.2,736.42 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:736.42,738.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:740.2,740.19 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:740.19,742.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:742.17,744.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:745.3,745.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:748.2,748.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:748.33,750.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:752.2,752.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:752.51,754.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:755.2,758.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:758.9,760.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:762.2,763.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:763.16,765.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:767.2,768.36 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:768.36,770.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:772.2,774.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:777.111,779.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:779.16,781.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:783.2,785.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:785.33,787.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:789.2,789.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:789.52,791.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:792.2,795.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:795.9,797.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:799.2,805.36 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:805.36,807.21 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:807.21,809.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:809.9,811.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:814.2,816.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:819.115,821.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:821.16,823.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:825.2,828.19 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:828.19,830.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:830.17,832.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:835.2,836.19 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:836.19,837.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:837.46,839.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:839.9,841.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:844.2,844.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:844.33,846.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:848.2,848.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:848.52,850.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:851.2,854.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:854.9,856.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:858.2,861.28 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:861.28,862.17 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:862.17,864.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:864.9,866.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:869.2,871.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:874.109,876.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:876.16,878.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:880.2,884.62 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:884.62,886.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:888.2,888.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:888.33,890.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:892.2,892.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:892.52,894.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:895.2,898.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:898.9,900.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:902.2,903.54 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:903.54,904.44 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:904.44,906.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:907.3,907.39 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:910.2,910.36 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:910.36,911.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:911.40,912.18 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:912.18,915.5 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:915.10,917.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:921.2,921.31 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:924.108,926.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:926.16,928.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:930.2,932.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:932.33,934.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:936.2,936.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:936.51,938.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:939.2,942.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:942.9,944.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:946.2,947.28 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:947.28,948.27 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:948.27,950.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:953.2,953.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:956.110,958.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:958.16,960.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:962.2,964.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:964.33,966.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:967.2,967.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:967.52,969.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:970.2,972.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:972.9,974.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:975.2,976.20 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:976.20,978.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:980.2,982.69 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:985.120,987.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:987.16,989.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:991.2,996.16 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:996.16,998.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1000.2,1001.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:532.2,533.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:533.16,535.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:537.2,538.15 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:538.15,539.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:539.34,540.14 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:540.14,542.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:546.2,548.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:548.33,549.38 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:549.38,552.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:553.3,553.57 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:553.57,555.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:556.3,558.10 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:558.10,560.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:561.3,564.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:567.2,571.33 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:571.33,572.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:572.40,573.18 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:573.18,575.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:575.10,577.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:581.2,583.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:586.115,588.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:588.16,590.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:592.2,595.51 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:595.51,597.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:599.2,600.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:600.16,602.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:604.2,605.15 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:605.15,606.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:606.34,607.14 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:607.14,609.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:613.2,615.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:615.33,616.38 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:616.38,618.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:619.3,619.57 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:619.57,621.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:622.3,624.10 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:624.10,626.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:627.3,630.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:633.2,635.71 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:635.71,636.60 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:636.60,638.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:639.8,639.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:639.40,640.69 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:640.69,642.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:644.2,646.68 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:646.68,648.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:650.2,650.69 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:653.109,655.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:655.16,657.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:659.2,664.56 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:664.56,666.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:667.2,667.20 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:667.20,668.19 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:668.19,670.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:671.3,671.29 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:671.29,673.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:674.3,675.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:675.17,677.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:678.3,678.13 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:678.13,680.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:681.3,682.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:686.2,686.57 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:686.57,688.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:689.2,689.21 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:689.21,690.20 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:690.20,692.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:693.3,694.53 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:694.53,696.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:699.2,699.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:699.33,700.37 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:700.37,701.57 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:701.57,702.13 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:704.4,705.35 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:705.35,707.13 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:709.4,710.18 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:710.18,713.5 2 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:714.4,718.38 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:718.38,720.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:722.4,724.27 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:728.2,728.30 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:731.108,733.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:733.16,735.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:737.2,741.42 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:741.42,743.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:745.2,745.19 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:745.19,747.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:747.17,749.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:750.3,750.12 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:753.2,753.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:753.33,755.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:757.2,757.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:757.51,759.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:760.2,763.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:763.9,765.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:767.2,768.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:768.16,770.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:772.2,773.36 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:773.36,775.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:777.2,779.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:782.111,784.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:784.16,786.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:788.2,790.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:790.33,792.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:794.2,794.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:794.52,796.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:797.2,800.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:800.9,802.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:804.2,810.36 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:810.36,812.21 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:812.21,814.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:814.9,816.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:819.2,821.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:824.115,826.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:826.16,828.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:830.2,833.19 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:833.19,835.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:835.17,837.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:840.2,841.19 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:841.19,842.46 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:842.46,844.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:844.9,846.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:849.2,849.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:849.33,851.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:853.2,853.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:853.52,855.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:856.2,859.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:859.9,861.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:863.2,866.28 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:866.28,867.17 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:867.17,869.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:869.9,871.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:874.2,876.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:879.109,881.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:881.16,883.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:885.2,889.62 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:889.62,891.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:893.2,893.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:893.33,895.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:897.2,897.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:897.52,899.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:900.2,903.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:903.9,905.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:907.2,908.65 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:908.65,909.44 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:909.44,911.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:912.3,912.39 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:915.2,915.36 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:915.36,916.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:916.51,917.18 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:917.18,920.5 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:920.10,922.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:926.2,926.31 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:929.108,931.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:931.16,933.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:935.2,937.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:937.33,939.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:941.2,941.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:941.51,943.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:944.2,947.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:947.9,949.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:951.2,952.28 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:952.28,953.38 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:953.38,955.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:958.2,958.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:961.110,963.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:963.16,965.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:967.2,969.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:969.33,971.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:972.2,972.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:972.52,974.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:975.2,977.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:977.9,979.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:980.2,981.20 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:981.20,983.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:985.2,987.69 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:990.120,992.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:992.16,994.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:996.2,1001.16 4 1 github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1001.16,1003.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1005.2,1005.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1005.33,1007.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1009.2,1009.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1009.51,1011.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1012.2,1015.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1015.9,1017.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1019.2,1019.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1019.33,1020.61 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1020.61,1023.4 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1026.2,1026.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1029.119,1031.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1031.16,1033.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1035.2,1038.16 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1038.16,1040.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1042.2,1043.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1005.2,1006.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1006.16,1008.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1010.2,1010.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1010.33,1012.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1014.2,1014.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1014.51,1016.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1017.2,1020.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1020.9,1022.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1024.2,1024.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1024.33,1025.83 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1025.83,1028.4 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1031.2,1031.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1034.119,1036.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1036.16,1038.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1040.2,1043.16 3 1 github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1043.16,1045.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1047.2,1047.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1047.33,1049.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1051.2,1051.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1051.51,1053.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1054.2,1057.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1057.9,1059.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1061.2,1061.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1061.15,1063.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1064.2,1064.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1064.14,1066.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1068.2,1068.88 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1068.88,1070.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1072.2,1073.54 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1073.54,1075.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1077.2,1079.18 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1079.18,1080.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1080.34,1083.4 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1084.8,1085.34 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1085.34,1088.4 2 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1091.2,1091.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1094.118,1096.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1096.16,1098.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1100.2,1104.33 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1104.33,1106.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1108.2,1108.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1108.51,1110.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1111.2,1114.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1114.9,1116.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1118.2,1121.38 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1121.38,1122.45 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1122.45,1124.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1127.2,1130.28 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1130.28,1132.72 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1132.72,1135.4 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1138.2,1138.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1141.110,1143.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1143.16,1145.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1147.2,1156.65 9 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1156.65,1158.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1160.2,1160.62 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1160.62,1162.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1164.2,1164.54 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1164.54,1166.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1166.5,1168.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1168.8,1171.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1171.17,1173.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1174.3,1175.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1175.17,1177.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1180.2,1180.54 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1180.54,1182.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1182.5,1183.61 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1183.61,1185.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1186.3,1186.50 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1186.50,1188.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1189.3,1190.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1190.17,1192.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1193.3,1193.17 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1193.17,1195.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1196.3,1197.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1197.17,1199.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1202.2,1202.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1202.33,1204.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1206.2,1206.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1206.52,1208.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1209.2,1212.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1212.9,1214.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1216.2,1216.32 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1216.32,1218.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1219.2,1219.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1219.15,1221.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1223.2,1224.42 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1224.42,1225.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1225.55,1227.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1227.15,1229.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1230.4,1230.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1233.2,1233.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1233.40,1235.39 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1235.39,1236.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1236.46,1238.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1240.3,1240.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1240.55,1241.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1241.15,1243.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1244.4,1244.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1248.2,1250.35 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1250.35,1251.24 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1251.24,1252.9 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1254.3,1254.43 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1254.43,1255.85 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1255.85,1257.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1258.4,1258.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1260.3,1261.81 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1261.81,1263.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1266.2,1268.34 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1268.34,1269.17 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1269.17,1271.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1271.9,1273.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1276.2,1278.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1281.115,1283.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1283.16,1285.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1287.2,1297.62 10 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1297.62,1299.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1301.2,1301.54 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1301.54,1303.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1303.5,1305.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1305.8,1308.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1308.17,1310.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1311.3,1312.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1312.17,1314.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1317.2,1317.54 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1317.54,1319.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1319.5,1320.61 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1320.61,1322.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1323.3,1323.50 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1323.50,1325.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1326.3,1327.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1327.17,1329.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1330.3,1330.17 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1330.17,1332.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1333.3,1334.17 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1334.17,1336.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1339.2,1339.36 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1339.36,1341.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1343.2,1343.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1343.55,1345.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1346.2,1349.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1349.9,1351.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1353.2,1353.32 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1353.32,1355.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1356.2,1356.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1356.15,1358.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1360.2,1361.42 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1361.42,1362.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1362.55,1364.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1364.15,1366.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1367.4,1367.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1370.2,1370.40 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1370.40,1372.39 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1372.39,1373.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1373.46,1375.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1377.3,1377.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1377.55,1378.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1378.15,1380.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1381.4,1381.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1385.2,1387.35 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1387.35,1388.24 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1388.24,1389.9 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1391.3,1391.43 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1391.43,1392.85 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1392.85,1394.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1395.4,1395.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1397.3,1398.81 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1398.81,1400.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1403.2,1405.40 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1405.40,1406.60 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1406.60,1408.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1409.8,1410.69 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1410.69,1412.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1414.2,1416.71 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1416.71,1418.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1420.2,1420.72 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1423.110,1424.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1424.46,1426.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1428.2,1429.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1429.16,1431.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1433.2,1434.15 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1434.15,1435.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1435.34,1436.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1436.14,1438.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1442.2,1444.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1444.33,1445.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1445.37,1446.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1446.58,1448.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1449.4,1451.11 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1451.11,1453.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1454.4,1457.6 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1461.2,1464.35 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1464.35,1465.17 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1465.17,1467.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1467.9,1469.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1472.2,1474.25 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1477.115,1479.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1479.16,1481.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1483.2,1486.51 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1486.51,1488.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1490.2,1491.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1491.16,1493.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1495.2,1496.15 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1496.15,1497.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1497.34,1498.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1498.14,1500.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1504.2,1506.33 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1506.33,1507.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1507.37,1508.58 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1508.58,1510.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1511.4,1513.11 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1513.11,1515.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1516.4,1519.6 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1523.2,1525.40 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1525.40,1526.60 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1526.60,1528.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1529.8,1530.69 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1530.69,1532.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1534.2,1536.64 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1536.64,1538.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1540.2,1540.65 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1543.33,1815.2 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1047.2,1048.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1048.16,1050.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1052.2,1052.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1052.33,1054.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1056.2,1056.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1056.51,1058.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1059.2,1062.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1062.9,1064.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1066.2,1066.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1066.15,1068.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1069.2,1069.14 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1069.14,1071.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1073.2,1073.88 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1073.88,1075.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1077.2,1078.65 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1078.65,1080.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1082.2,1084.18 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1084.18,1085.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1085.34,1088.4 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1089.8,1090.34 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1090.34,1093.4 2 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1096.2,1096.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1099.118,1101.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1101.16,1103.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1105.2,1109.33 4 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1109.33,1111.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1113.2,1113.51 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1113.51,1115.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1116.2,1119.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1119.9,1121.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1123.2,1126.38 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1126.38,1127.45 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1127.45,1129.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1132.2,1135.28 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1135.28,1137.81 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1137.81,1140.4 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1143.2,1143.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1146.110,1148.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1148.16,1150.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1152.2,1161.65 9 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1161.65,1163.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1165.2,1165.62 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1165.62,1167.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1169.2,1169.54 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1169.54,1171.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1171.5,1173.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1173.8,1176.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1176.17,1178.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1179.3,1180.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1180.17,1182.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1185.2,1185.54 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1185.54,1187.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1187.5,1188.61 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1188.61,1190.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1191.3,1191.50 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1191.50,1193.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1194.3,1195.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1195.17,1197.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1198.3,1198.17 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1198.17,1200.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1201.3,1202.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1202.17,1204.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1207.2,1207.33 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1207.33,1209.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1211.2,1211.52 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1211.52,1213.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1214.2,1217.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1217.9,1219.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1221.2,1221.32 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1221.32,1223.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1224.2,1224.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1224.15,1226.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1228.2,1229.42 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1229.42,1230.66 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1230.66,1232.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1232.15,1234.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1235.4,1235.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1238.2,1238.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1238.40,1240.39 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1240.39,1241.46 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1241.46,1243.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1245.3,1245.66 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1245.66,1246.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1246.15,1248.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1249.4,1249.64 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1253.2,1255.35 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1255.35,1256.24 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1256.24,1257.9 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1259.3,1259.43 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1259.43,1260.107 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1260.107,1262.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1263.4,1263.12 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1265.3,1266.90 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1266.90,1268.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1271.2,1273.34 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1273.34,1274.17 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1274.17,1276.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1276.9,1278.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1281.2,1283.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1286.115,1288.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1288.16,1290.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1292.2,1302.62 10 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1302.62,1304.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1306.2,1306.54 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1306.54,1308.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1308.5,1310.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1310.8,1313.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1313.17,1315.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1316.3,1317.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1317.17,1319.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1322.2,1322.54 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1322.54,1324.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1324.5,1325.61 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1325.61,1327.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1328.3,1328.50 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1328.50,1330.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1331.3,1332.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1332.17,1334.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1335.3,1335.17 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1335.17,1337.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1338.3,1339.17 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1339.17,1341.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1344.2,1344.36 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1344.36,1346.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1348.2,1348.55 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1348.55,1350.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1351.2,1354.9 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1354.9,1356.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1358.2,1358.32 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1358.32,1360.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1361.2,1361.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1361.15,1363.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1365.2,1366.42 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1366.42,1367.66 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1367.66,1369.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1369.15,1371.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1372.4,1372.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1375.2,1375.40 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1375.40,1377.39 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1377.39,1378.46 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1378.46,1380.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1382.3,1382.66 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1382.66,1383.15 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1383.15,1385.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1386.4,1386.64 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1390.2,1392.35 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1392.35,1393.24 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1393.24,1394.9 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1396.3,1396.43 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1396.43,1397.107 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1397.107,1399.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1400.4,1400.12 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1402.3,1403.90 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1403.90,1405.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1408.2,1410.40 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1410.40,1411.60 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1411.60,1413.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1414.8,1415.69 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1415.69,1417.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1419.2,1421.71 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1421.71,1423.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1425.2,1425.72 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1428.110,1429.46 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1429.46,1431.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1433.2,1434.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1434.16,1436.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1438.2,1439.15 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1439.15,1440.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1440.34,1441.14 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1441.14,1443.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1447.2,1449.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1449.33,1450.37 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1450.37,1451.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1451.58,1453.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1454.4,1456.11 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1456.11,1458.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1459.4,1462.6 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1466.2,1469.35 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1469.35,1470.17 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1470.17,1472.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1472.9,1474.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1477.2,1479.25 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1482.115,1484.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1484.16,1486.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1488.2,1491.51 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1491.51,1493.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1495.2,1496.16 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1496.16,1498.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1500.2,1501.15 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1501.15,1502.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1502.34,1503.14 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1503.14,1505.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1509.2,1511.33 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1511.33,1512.37 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1512.37,1513.58 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1513.58,1515.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1516.4,1518.11 3 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1518.11,1520.5 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1521.4,1524.6 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1528.2,1530.40 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1530.40,1531.60 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1531.60,1533.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1534.8,1535.69 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1535.69,1537.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1539.2,1541.64 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1541.64,1543.3 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1545.2,1545.65 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/commands.go:1548.33,1820.2 1 0 github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:24.50,25.18 1 1 github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:25.18,27.3 1 1 github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:28.2,28.22 1 1 @@ -3069,235 +3069,41 @@ github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:257.18,259.3 github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:260.2,260.17 1 1 github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:260.17,262.3 1 1 github.com/echovault/echovault/pkg/modules/sorted_set/key_funcs.go:263.2,263.49 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:48.53,52.28 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:52.28,58.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:59.2,59.10 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:62.46,64.2 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:66.49,68.2 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:70.58,75.44 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:75.44,77.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:79.2,81.15 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:81.15,83.47 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:83.47,86.4 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:87.8,89.43 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:89.43,91.58 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:91.58,93.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:93.7,95.57 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:95.57,97.6 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:98.5,98.8 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:103.2,103.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:106.46,108.32 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:108.32,113.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:114.2,114.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:117.41,119.2 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:123.16,125.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:125.16,127.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:128.2,129.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:129.16,131.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:132.2,133.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:133.16,135.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:136.2,137.16 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:137.16,139.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:140.2,140.51 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:140.51,142.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:143.2,143.57 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:143.57,145.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:147.2,149.36 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:149.36,150.29 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:150.29,151.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:151.30,161.5 3 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:162.4,162.101 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:162.101,164.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:165.4,170.35 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:170.35,172.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:174.3,174.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:177.2,177.28 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:177.28,178.38 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:178.38,180.29 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:180.29,186.36 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:186.36,188.6 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:190.4,190.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:192.3,192.38 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:192.38,194.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:194.30,201.5 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:202.4,202.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:205.3,205.76 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:205.76,207.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:208.3,212.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:214.2,214.19 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:217.44,218.21 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:218.21,221.3 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:222.2,222.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:225.73,227.71 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:227.71,229.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:230.2,230.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:230.15,232.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:233.2,233.16 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:233.16,235.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:237.2,239.54 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:239.54,240.39 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:240.39,242.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:243.3,243.39 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:246.2,246.29 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:246.29,247.24 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:247.24,248.9 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:250.3,252.17 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:252.17,254.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:257.2,257.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:260.64,262.28 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:262.28,263.33 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:263.33,264.29 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:264.29,266.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:269.2,269.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:278.53,279.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:279.46,281.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:282.2,282.28 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:282.28,284.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:285.2,285.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:285.37,286.36 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:286.36,288.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:289.3,289.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:289.52,291.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:293.2,293.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:297.70,298.24 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:299.9,300.39 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:301.9,303.52 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:303.52,308.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:309.3,309.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:310.9,313.52 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:313.52,315.48 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:315.48,320.13 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:323.4,325.42 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:325.42,327.23 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:328.17,329.26 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:330.17,331.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:332.14,334.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:341.4,341.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:345.3,345.52 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:345.52,346.65 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:346.65,348.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:348.7,353.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:355.3,355.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:356.10,363.40 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:363.40,364.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:364.37,367.13 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:369.4,371.42 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:371.42,372.23 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:373.17,374.26 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:375.17,376.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:377.14,379.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:385.3,385.41 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:385.41,386.65 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:386.65,388.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:388.7,390.5 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:392.3,392.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:397.74,398.24 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:399.9,400.39 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:401.9,403.52 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:403.52,408.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:409.3,409.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:410.9,413.52 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:413.52,415.48 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:415.48,416.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:419.4,421.42 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:421.42,423.23 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:424.17,425.26 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:426.17,427.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:428.14,430.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:437.4,437.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:439.3,439.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:440.10,446.40 4 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:446.40,447.37 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:447.37,448.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:450.4,452.42 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:452.42,453.23 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:454.17,455.26 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:456.17,457.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:458.14,460.46 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/sorted_set.go:466.3,466.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:25.97,27.60 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:27.60,29.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:30.2,30.24 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:30.24,31.48 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:31.48,32.85 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:32.85,33.10 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:35.4,36.18 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:36.18,38.5 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:39.4,39.32 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:43.2,44.62 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:44.62,46.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:47.2,47.26 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:47.26,48.94 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:48.94,50.4 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:51.3,51.53 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:54.2,55.63 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:55.63,57.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:58.2,58.27 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:58.27,60.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:63.2,64.85 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:64.85,65.26 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:65.26,66.12 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:68.3,68.31 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:68.31,70.12 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:72.3,72.41 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:72.41,74.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:77.2,78.30 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:78.30,80.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:80.8,82.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:84.2,84.55 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:84.55,86.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:86.8,86.31 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:86.31,87.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:87.34,89.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:92.2,92.50 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:95.69,96.25 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:96.25,98.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:99.2,101.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:101.9,103.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:104.2,104.69 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:104.69,106.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:107.2,107.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:110.65,111.23 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:111.23,113.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:114.2,116.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:116.9,118.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:119.2,119.67 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:119.67,121.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:122.2,122.18 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:125.59,126.20 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:126.20,128.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:129.2,131.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:131.9,133.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:134.2,134.34 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:134.34,136.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:137.2,137.16 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:140.53,141.17 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:141.17,143.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:144.2,146.9 3 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:146.9,148.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:149.2,149.35 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:149.35,151.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:152.2,152.15 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:155.61,156.31 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:157.10,158.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:159.12,160.16 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:160.16,162.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:163.3,163.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:164.12,165.16 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:165.16,167.4 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:168.3,168.13 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:174.43,175.14 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:175.14,177.3 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:178.2,178.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:178.30,180.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:181.2,181.30 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:181.30,183.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:185.2,186.21 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:186.21,188.3 1 0 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:190.2,191.29 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:191.29,193.13 2 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:193.13,194.9 1 1 -github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:198.2,198.10 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:24.97,26.60 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:26.60,28.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:29.2,29.24 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:29.24,30.48 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:30.48,31.85 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:31.85,32.10 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:34.4,35.18 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:35.18,37.5 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:38.4,38.32 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:42.2,43.62 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:43.62,45.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:46.2,46.26 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:46.26,47.94 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:47.94,49.4 1 0 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:50.3,50.53 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:53.2,54.63 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:54.63,56.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:57.2,57.27 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:57.27,59.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:62.2,63.85 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:63.85,64.26 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:64.26,65.12 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:67.3,67.31 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:67.31,69.12 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:71.3,71.41 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:71.41,73.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:76.2,77.30 2 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:77.30,79.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:79.8,81.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:83.2,83.55 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:83.55,85.3 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:85.8,85.31 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:85.31,86.34 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:86.34,88.4 1 1 +github.com/echovault/echovault/pkg/modules/sorted_set/utils.go:91.2,91.50 1 1 github.com/echovault/echovault/pkg/modules/string/commands.go:26.112,28.16 2 1 github.com/echovault/echovault/pkg/modules/string/commands.go:28.16,30.3 1 1 github.com/echovault/echovault/pkg/modules/string/commands.go:32.2,35.9 3 1 diff --git a/pkg/modules/sorted_set/sorted_set.go b/internal/sorted_set/sorted_set.go similarity index 69% rename from pkg/modules/sorted_set/sorted_set.go rename to internal/sorted_set/sorted_set.go index 4b2667e..88ac633 100644 --- a/pkg/modules/sorted_set/sorted_set.go +++ b/internal/sorted_set/sorted_set.go @@ -28,17 +28,17 @@ type Value string type Score float64 -// MemberObject is the shape of the object as it's stored in the map that represents the set +// MemberObject is the shape of the object as it's stored in the map that represents the Set type MemberObject struct { - value Value - score Score - exists bool + Value Value + Score Score + Exists bool } // MemberParam is the shape of the object passed as a parameter to NewSortedSet and the Add method type MemberParam struct { - value Value - score Score + Value Value + Score Score } type SortedSet struct { @@ -50,17 +50,17 @@ func NewSortedSet(members []MemberParam) *SortedSet { members: make(map[Value]MemberObject), } for _, m := range members { - s.members[m.value] = MemberObject{ - value: m.value, - score: m.score, - exists: true, + s.members[m.Value] = MemberObject{ + Value: m.Value, + Score: m.Score, + Exists: true, } } return s } func (set *SortedSet) Contains(m Value) bool { - return set.members[m].exists + return set.members[m].Exists } func (set *SortedSet) Get(v Value) MemberObject { @@ -89,11 +89,11 @@ func (set *SortedSet) GetRandom(count int) []MemberParam { for i := 0; i < internal.AbsInt(count); { n = rand.Intn(len(members)) if !slices.ContainsFunc(res, func(m MemberParam) bool { - return m.value == members[n].value + return m.Value == members[n].Value }) { res = append(res, members[n]) slices.DeleteFunc(members, func(m MemberParam) bool { - return m.value == members[n].value + return m.Value == members[n].Value }) i++ } @@ -107,8 +107,8 @@ func (set *SortedSet) GetAll() []MemberParam { var res []MemberParam for k, v := range set.members { res = append(res, MemberParam{ - value: k, - score: v.score, + Value: k, + Score: v.Score, }) } return res @@ -141,31 +141,31 @@ func (set *SortedSet) AddOrUpdate( return 0, errors.New("cannot use GT or LT when update policy is NX") } if strings.EqualFold(inc, "incr") && len(members) != 1 { - return 0, errors.New("INCR can only be used with one member/score pair") + return 0, errors.New("INCR can only be used with one member/Score pair") } count := 0 if strings.EqualFold(inc, "incr") { for _, m := range members { - if !set.Contains(m.value) { - // If the member is not contained, add it with the increment as its score - set.members[m.value] = MemberObject{ - value: m.value, - score: m.score, - exists: true, + if !set.Contains(m.Value) { + // If the member is not contained, add it with the increment as its Score + set.members[m.Value] = MemberObject{ + Value: m.Value, + Score: m.Score, + Exists: true, } // Always add count because this is the addition of a new element count += 1 return count, err } - if slices.Contains([]Score{Score(math.Inf(-1)), Score(math.Inf(1))}, set.members[m.value].score) { + if slices.Contains([]Score{Score(math.Inf(-1)), Score(math.Inf(1))}, set.members[m.Value].Score) { return count, errors.New("cannot increment -inf or +inf") } - set.members[m.value] = MemberObject{ - value: m.value, - score: set.members[m.value].score + m.score, - exists: true, + set.members[m.Value] = MemberObject{ + Value: m.Value, + Score: set.members[m.Value].Score + m.Score, + Exists: true, } if strings.EqualFold(ch, "ch") { count += 1 @@ -177,11 +177,11 @@ func (set *SortedSet) AddOrUpdate( for _, m := range members { if strings.EqualFold(policy, "xx") { // Only update existing elements, do not add new elements - if set.Contains(m.value) { - set.members[m.value] = MemberObject{ - value: m.value, - score: compareScores(set.members[m.value].score, m.score, comp), - exists: true, + if set.Contains(m.Value) { + set.members[m.Value] = MemberObject{ + Value: m.Value, + Score: compareScores(set.members[m.Value].Score, m.Score, comp), + Exists: true, } if strings.EqualFold(ch, "ch") { count += 1 @@ -191,24 +191,24 @@ func (set *SortedSet) AddOrUpdate( } if strings.EqualFold(policy, "nx") { // Only add new elements, do not update existing elements - if !set.Contains(m.value) { - set.members[m.value] = MemberObject{ - value: m.value, - score: m.score, - exists: true, + if !set.Contains(m.Value) { + set.members[m.Value] = MemberObject{ + Value: m.Value, + Score: m.Score, + Exists: true, } count += 1 } continue } - // Policy not specified, just set the elements and scores - if set.members[m.value].score != m.score || !set.members[m.value].exists { + // Policy not specified, just Set the elements and scores + if set.members[m.Value].Score != m.Score || !set.members[m.Value].Exists { count += 1 } - set.members[m.value] = MemberObject{ - value: m.value, - score: compareScores(set.members[m.value].score, m.score, comp), - exists: true, + set.members[m.Value] = MemberObject{ + Value: m.Value, + Score: compareScores(set.members[m.Value].Score, m.Score, comp), + Exists: true, } } return count, nil @@ -238,16 +238,16 @@ func (set *SortedSet) Pop(count int, policy string) (*SortedSet, error) { slices.SortFunc(members, func(a, b MemberParam) int { if strings.EqualFold(policy, "min") { - return cmp.Compare(a.score, b.score) + return cmp.Compare(a.Score, b.Score) } - return cmp.Compare(b.score, a.score) + return cmp.Compare(b.Score, a.Score) }) for i := 0; i < count; i++ { if i >= len(members) { break } - set.Remove(members[i].value) + set.Remove(members[i].Value) _, err := popped.AddOrUpdate([]MemberParam{members[i]}, nil, nil, nil, nil) if err != nil { return nil, err @@ -261,8 +261,8 @@ func (set *SortedSet) Subtract(others []*SortedSet) *SortedSet { res := NewSortedSet(set.GetAll()) for _, ss := range others { for _, m := range ss.GetAll() { - if res.Contains(m.value) { - res.Remove(m.value) + if res.Contains(m.Value) { + res.Remove(m.Value) } } } @@ -271,8 +271,8 @@ func (set *SortedSet) Subtract(others []*SortedSet) *SortedSet { // SortedSetParam is a composite object used for Intersect and Union function type SortedSetParam struct { - set *SortedSet - weight int + Set *SortedSet + Weight int } func (set *SortedSet) Equals(other *SortedSet) bool { @@ -283,10 +283,10 @@ func (set *SortedSet) Equals(other *SortedSet) bool { return true } for _, member := range set.members { - if !other.Contains(member.value) { + if !other.Contains(member.Value) { return false } - if member.score != other.Get(member.value).score { + if member.Score != other.Get(member.Value).Score { return false } } @@ -300,29 +300,29 @@ func Union(aggregate string, setParams ...SortedSetParam) *SortedSet { return NewSortedSet([]MemberParam{}) case 1: var params []MemberParam - for _, member := range setParams[0].set.GetAll() { + for _, member := range setParams[0].Set.GetAll() { params = append(params, MemberParam{ - value: member.value, - score: member.score * Score(setParams[0].weight), + Value: member.Value, + Score: member.Score * Score(setParams[0].Weight), }) } return NewSortedSet(params) case 2: var params []MemberParam - // Traverse the params in the left sorted set - for _, member := range setParams[0].set.GetAll() { - // If the member does not exist in the other sorted set, add it to params along with the appropriate weight - if !setParams[1].set.Contains(member.value) { + // Traverse the params in the left sorted Set + for _, member := range setParams[0].Set.GetAll() { + // If the member does not exist in the other sorted Set, add it to params along with the appropriate Weight + if !setParams[1].Set.Contains(member.Value) { params = append(params, MemberParam{ - value: member.value, - score: member.score * Score(setParams[0].weight), + Value: member.Value, + Score: member.Score * Score(setParams[0].Weight), }) continue } - // If the member exists, get both elements and apply the weight + // If the member Exists, get both elements and apply the Weight param := MemberParam{ - value: member.value, - score: func(left, right Score) Score { + Value: member.Value, + Score: func(left, right Score) Score { // Choose which param to add to params depending on the aggregate switch aggregate { case "sum": @@ -334,21 +334,21 @@ func Union(aggregate string, setParams ...SortedSetParam) *SortedSet { return compareScores(left, right, "gt") } }( - member.score*Score(setParams[0].weight), - setParams[1].set.Get(member.value).score*Score(setParams[1].weight), + member.Score*Score(setParams[0].Weight), + setParams[1].Set.Get(member.Value).Score*Score(setParams[1].Weight), ), } params = append(params, param) } - // Traverse the params on the right sorted set and add all the elements that are not + // Traverse the params on the right sorted Set and add all the elements that are not // already contained in params with their respective weights applied. - for _, member := range setParams[1].set.GetAll() { + for _, member := range setParams[1].Set.GetAll() { if !slices.ContainsFunc(params, func(param MemberParam) bool { - return param.value == member.value + return param.Value == member.Value }) { params = append(params, MemberParam{ - value: member.value, - score: member.score * Score(setParams[1].weight), + Value: member.Value, + Score: member.Score * Score(setParams[1].Weight), }) } } @@ -359,16 +359,16 @@ func Union(aggregate string, setParams ...SortedSetParam) *SortedSet { right := Union(aggregate, setParams[len(setParams)/2:]...) var params []MemberParam - // Traverse left sub-set and add the union elements to params + // Traverse left sub-Set and add the union elements to params for _, member := range left.GetAll() { - if !right.Contains(member.value) { - // If the right set does not contain the current element, just add it to params + if !right.Contains(member.Value) { + // If the right Set does not contain the current element, just add it to params params = append(params, member) continue } params = append(params, MemberParam{ - value: member.value, - score: func(left, right Score) Score { + Value: member.Value, + Score: func(left, right Score) Score { switch aggregate { case "sum": return left + right @@ -378,13 +378,13 @@ func Union(aggregate string, setParams ...SortedSetParam) *SortedSet { // Aggregate is "max" return compareScores(left, right, "gt") } - }(member.score, right.Get(member.value).score), + }(member.Score, right.Get(member.Value).Score), }) } - // Traverse the right sub-set and add any remaining elements to params + // Traverse the right sub-Set and add any remaining elements to params for _, member := range right.GetAll() { if !slices.ContainsFunc(params, func(param MemberParam) bool { - return param.value == member.value + return param.Value == member.Value }) { params = append(params, member) } @@ -400,25 +400,25 @@ func Intersect(aggregate string, setParams ...SortedSetParam) *SortedSet { return NewSortedSet([]MemberParam{}) case 1: var params []MemberParam - for _, member := range setParams[0].set.GetAll() { + for _, member := range setParams[0].Set.GetAll() { params = append(params, MemberParam{ - value: member.value, - score: member.score * Score(setParams[0].weight), + Value: member.Value, + Score: member.Score * Score(setParams[0].Weight), }) } return NewSortedSet(params) case 2: var params []MemberParam - // Traverse the params in the left sorted set - for _, member := range setParams[0].set.GetAll() { - // Check if the member exists in the right sorted set - if !setParams[1].set.Contains(member.value) { + // Traverse the params in the left sorted Set + for _, member := range setParams[0].Set.GetAll() { + // Check if the member Exists in the right sorted Set + if !setParams[1].Set.Contains(member.Value) { continue } - // If the member exists, get both elements and apply the weight + // If the member Exists, get both elements and apply the Weight param := MemberParam{ - value: member.value, - score: func(left, right Score) Score { + Value: member.Value, + Score: func(left, right Score) Score { // Choose which param to add to params depending on the aggregate switch aggregate { case "sum": @@ -430,8 +430,8 @@ func Intersect(aggregate string, setParams ...SortedSetParam) *SortedSet { return compareScores(left, right, "gt") } }( - member.score*Score(setParams[0].weight), - setParams[1].set.Get(member.value).score*Score(setParams[1].weight), + member.Score*Score(setParams[0].Weight), + setParams[1].Set.Get(member.Value).Score*Score(setParams[1].Weight), ), } params = append(params, param) @@ -444,12 +444,12 @@ func Intersect(aggregate string, setParams ...SortedSetParam) *SortedSet { var params []MemberParam for _, member := range left.GetAll() { - if !right.Contains(member.value) { + if !right.Contains(member.Value) { continue } params = append(params, MemberParam{ - value: member.value, - score: func(left, right Score) Score { + Value: member.Value, + Score: func(left, right Score) Score { switch aggregate { case "sum": return left + right @@ -459,7 +459,7 @@ func Intersect(aggregate string, setParams ...SortedSetParam) *SortedSet { // Aggregate is "max" return compareScores(left, right, "gt") } - }(member.score, right.Get(member.value).score), + }(member.Score, right.Get(member.Value).Score), }) } diff --git a/internal/sorted_set/utils.go b/internal/sorted_set/utils.go new file mode 100644 index 0000000..73a531c --- /dev/null +++ b/internal/sorted_set/utils.go @@ -0,0 +1,98 @@ +// Copyright 2024 Kelvin Clement Mwinuka +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sorted_set + +import ( + "errors" + "slices" + "strings" +) + +func validateUpdatePolicy(updatePolicy interface{}) (string, error) { + if updatePolicy == nil { + return "", nil + } + err := errors.New("update policy must be a string of Value NX or XX") + policy, ok := updatePolicy.(string) + if !ok { + return "", err + } + if !slices.Contains([]string{"nx", "xx"}, strings.ToLower(policy)) { + return "", err + } + return policy, nil +} + +func validateComparison(comparison interface{}) (string, error) { + if comparison == nil { + return "", nil + } + err := errors.New("comparison condition must be a string of Value LT or GT") + comp, ok := comparison.(string) + if !ok { + return "", err + } + if !slices.Contains([]string{"lt", "gt"}, strings.ToLower(comp)) { + return "", err + } + return comp, nil +} + +func validateChanged(changed interface{}) (string, error) { + if changed == nil { + return "", nil + } + err := errors.New("changed condition should be a string of Value CH") + ch, ok := changed.(string) + if !ok { + return "", err + } + if !strings.EqualFold(ch, "ch") { + return "", err + } + return ch, nil +} + +func validateIncr(incr interface{}) (string, error) { + if incr == nil { + return "", nil + } + err := errors.New("incr condition should be a string of Value INCR") + i, ok := incr.(string) + if !ok { + return "", err + } + if !strings.EqualFold(i, "incr") { + return "", err + } + return i, nil +} + +func compareScores(old Score, new Score, comp string) Score { + switch strings.ToLower(comp) { + default: + return new + case "lt": + if new < old { + return new + } + return old + case "gt": + if new > old { + return new + } + return old + } +} diff --git a/internal/utils.go b/internal/utils.go index 66e85bf..67eb318 100644 --- a/internal/utils.go +++ b/internal/utils.go @@ -17,6 +17,7 @@ package internal import ( "bufio" "bytes" + "cmp" "errors" "fmt" "github.com/echovault/echovault/pkg/utils" @@ -24,6 +25,7 @@ import ( "log" "math/big" "net" + "reflect" "runtime" "slices" "strconv" @@ -220,6 +222,35 @@ func FilterExpiredKeys(state map[string]KeyData) map[string]KeyData { return state } +// CompareLex returns -1 when s2 is lexicographically greater than s1, +// 0 if they're equal and 1 if s2 is lexicographically less than s1. +func CompareLex(s1 string, s2 string) int { + if s1 == s2 { + return 0 + } + if strings.Contains(s1, s2) { + return 1 + } + if strings.Contains(s2, s1) { + return -1 + } + + limit := len(s1) + if len(s2) < limit { + limit = len(s2) + } + + var c int + for i := 0; i < limit; i++ { + c = cmp.Compare(s1[i], s2[i]) + if c != 0 { + break + } + } + + return c +} + func EncodeCommand(cmd []string) []byte { res := fmt.Sprintf("*%d\r\n", len(cmd)) for _, token := range cmd { @@ -356,3 +387,21 @@ func ParseBooleanArrayResponse(b []byte) ([]bool, error) { } return arr, nil } + +func CompareNestedStringArrays(got [][]string, want [][]string) bool { + for _, wantItem := range want { + if !slices.ContainsFunc(got, func(gotItem []string) bool { + return reflect.DeepEqual(wantItem, gotItem) + }) { + return false + } + } + for _, gotItem := range got { + if !slices.ContainsFunc(want, func(wantItem []string) bool { + return reflect.DeepEqual(wantItem, gotItem) + }) { + return false + } + } + return true +} diff --git a/pkg/echovault/aof/log.aof b/pkg/echovault/aof/log.aof index e69de29..0fb8a7b 100755 --- a/pkg/echovault/aof/log.aof +++ b/pkg/echovault/aof/log.aof @@ -0,0 +1,140686 @@ +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$10 +ZDIFFSTORE +$12 +destination5 +$12 +non-existent +$5 +key10 +$5 +key11 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$10 +ZDIFFSTORE +$12 +destination5 +$16 +non-existent-key +$5 +key10 +$5 +key11 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$10 +ZDIFFSTORE +$12 +destination5 +$16 +non-existent-key +$4 +blah +$5 +key10 +$5 +key11 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*12 +$4 +ZADD +$4 +key1 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*2 +$4 +RPOP +$4 +key2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*2 +$4 +LPOP +$4 +key1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 +$2 +55 +$7 +member1 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +LPOP +$4 +key1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 +$3 +7.5 +$7 +member1 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 +$3 +5.5 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*12 +$4 +ZADD +$4 +key1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 +$3 +5.5 +$7 +member1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*2 +$4 +LPOP +$4 +key1 + +*2 +$4 +RPOP +$4 +key2 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$4 +LSET +$4 +key1 +$1 +3 +$9 +new-value + +*4 +$4 +LSET +$4 +key2 +$1 +0 +$9 +new-value + +*4 +$4 +LREM +$4 +key1 +$1 +3 +$1 +4 + +*4 +$5 +RPUSH +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$6 +LPUSHX +$4 +key1 +$6 +value1 +$6 +value2 + +*4 +$4 +LSET +$4 +key3 +$1 +1 +$9 +new-value + +*5 +$5 +LMOVE +$7 +source1 +$12 +destination1 +$4 +LEFT +$4 +LEFT + +*4 +$5 +LPUSH +$4 +key2 +$6 +value1 +$6 +value2 + +*5 +$5 +LMOVE +$7 +source2 +$12 +destination2 +$4 +LEFT +$5 +RIGHT + +*4 +$5 +LPUSH +$4 +key3 +$6 +value1 +$6 +value2 + +*11 +$4 +ZADD +$4 +key6 +$2 +XX +$2 +GT +$2 +CH +$3 +7.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key1 +$1 +3 +$1 +6 + +*9 +$4 +ZADD +$4 +key2 +$2 +NX +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member4 +$2 +10 +$7 +member5 + +*4 +$5 +LTRIM +$4 +key2 +$1 +5 +$2 +-1 + +*12 +$4 +ZADD +$4 +key1 +$3 +5.5 +$7 +member1 +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$4 +-Inf +$7 +member4 +$4 ++Inf +$7 +member5 + +*12 +$4 +ZADD +$4 +key4 +$2 +XX +$2 +CH +$2 +55 +$7 +member1 +$4 +1005 +$7 +member2 +$2 +15 +$7 +member3 +$5 +99.75 +$7 +member4 + +*5 +$5 +LMOVE +$7 +source3 +$12 +destination3 +$5 +RIGHT +$4 +LEFT + +*2 +$4 +LPOP +$4 +key1 + +*9 +$4 +ZADD +$4 +key3 +$2 +NX +$5 +67.77 +$7 +member2 +$2 +10 +$7 +member3 +$3 +5.5 +$7 +member1 + +*4 +$4 +LREM +$4 +key2 +$2 +-3 +$1 +4 + +*10 +$4 +ZADD +$4 +key7 +$2 +XX +$2 +LT +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 +$2 +15 +$7 +member5 + +*5 +$5 +LMOVE +$7 +source4 +$12 +destination4 +$5 +RIGHT +$5 +RIGHT + +*2 +$4 +RPOP +$4 +key2 + +*11 +$4 +ZADD +$4 +key8 +$2 +XX +$2 +LT +$2 +CH +$2 +15 +$7 +member5 +$3 +3.5 +$7 +member1 +$5 +100.5 +$7 +member4 + +*5 +$4 +ZADD +$4 +key9 +$4 +INCR +$3 +5.5 +$7 +member3 + +*9 +$4 +ZADD +$4 +key5 +$2 +XX +$3 +5.5 +$7 +member4 +$5 +100.5 +$7 +member5 +$2 +15 +$7 +member6 + +*4 +$10 +ZDIFFSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$10 +ZDIFFSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 + +*5 +$10 +ZDIFFSTORE +$12 +destination3 +$4 +key6 +$18 +non-existent-key-1 +$18 +non-existent-key-2 + +*4 +$7 +ZINCRBY +$4 +key1 +$1 +5 +$3 +one + +*5 +$5 +ZMPOP +$4 +key1 +$3 +MIN +$5 +COUNT +$1 +1 + +*4 +$11 +ZINTERSTORE +$12 +destination1 +$4 +key1 +$4 +key2 + +*5 +$5 +ZMPOP +$4 +key2 +$3 +MIN +$5 +COUNT +$1 +1 + +*6 +$11 +ZINTERSTORE +$12 +destination2 +$4 +key3 +$4 +key4 +$4 +key5 +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key3 +$3 +MAX +$5 +COUNT +$1 +1 + +*4 +$7 +ZINCRBY +$4 +key2 +$7 +346.785 +$3 +one + +*5 +$5 +ZMPOP +$4 +key4 +$3 +MIN +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination3 +$4 +key6 +$4 +key7 +$4 +key8 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$5 +ZMPOP +$4 +key5 +$3 +MAX +$5 +COUNT +$1 +5 + +*8 +$11 +ZINTERSTORE +$12 +destination4 +$4 +key9 +$5 +key10 +$5 +key11 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*4 +$7 +ZINCRBY +$4 +key3 +$7 +346.785 +$3 +one + +*12 +$11 +ZINTERSTORE +$12 +destination5 +$5 +key12 +$5 +key13 +$5 +key14 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +SUM +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination6 +$5 +key15 +$5 +key16 +$5 +key17 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MAX +$10 +WITHSCORES + +*12 +$11 +ZINTERSTORE +$12 +destination7 +$5 +key18 +$5 +key19 +$5 +key20 +$7 +WEIGHTS +$1 +1 +$1 +5 +$1 +3 +$9 +AGGREGATE +$3 +MIN +$10 +WITHSCORES + +*5 +$11 +ZINTERSTORE +$13 +destination12 +$12 +non-existent +$5 +key32 +$5 +key33 + +*4 +$7 +ZINCRBY +$4 +key4 +$4 ++Inf +$3 +one + +*4 +$7 +ZINCRBY +$4 +key5 +$4 +-Inf +$3 +one + +*6 +$5 +ZMPOP +$4 +key6 +$4 +key7 +$3 +MAX +$5 +COUNT +$1 +5 + +*4 +$7 +ZINCRBY +$4 +key6 +$4 +-2.5 +$4 +five + +*8 +$5 +ZMPOP +$4 +key8 +$4 +key9 +$5 +key10 +$5 +key11 +$3 +MIN +$5 +COUNT +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination1 +$4 +key1 +$1 +3 +$1 +7 +$7 +BYSCORE + +*9 +$4 +ZREM +$4 +key1 +$5 +three +$4 +four +$4 +five +$4 +none +$3 +six +$4 +none +$5 +seven + +*6 +$11 +ZRANGESTORE +$12 +destination2 +$4 +key2 +$1 +3 +$1 +7 +$7 +BYSCORE + +*3 +$4 +ZREM +$4 +key2 +$6 +member + +*9 +$11 +ZRANGESTORE +$12 +destination3 +$4 +key3 +$1 +3 +$1 +7 +$7 +BYSCORE +$5 +LIMIT +$1 +2 +$1 +4 + +*3 +$7 +ZPOPMIN +$4 +key1 +$1 +1 + +*6 +$11 +ZRANGESTORE +$12 +destination4 +$4 +key4 +$1 +c +$1 +g +$5 +BYLEX + +*3 +$7 +ZPOPMAX +$4 +key2 +$1 +1 + +*3 +$7 +ZPOPMIN +$4 +key3 +$1 +5 + +*6 +$11 +ZRANGESTORE +$12 +destination5 +$4 +key5 +$1 +a +$1 +f +$5 +BYLEX + +*3 +$7 +ZPOPMAX +$4 +key4 +$1 +5 + +*9 +$11 +ZRANGESTORE +$12 +destination6 +$4 +key6 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key1 +$1 +3 +$1 +7 + +*9 +$11 +ZRANGESTORE +$12 +destination7 +$4 +key7 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*9 +$11 +ZRANGESTORE +$12 +destination8 +$4 +key8 +$1 +a +$1 +h +$5 +BYLEX +$5 +LIMIT +$1 +2 +$1 +4 + +*4 +$16 +ZREMRANGEBYSCORE +$4 +key2 +$1 +2 +$1 +4 + diff --git a/pkg/echovault/api_list_test.go b/pkg/echovault/api_list_test.go index 962f044..2b3c7a2 100644 --- a/pkg/echovault/api_list_test.go +++ b/pkg/echovault/api_list_test.go @@ -7,12 +7,6 @@ import ( "testing" ) -func presetValue(server *EchoVault, key string, value interface{}) { - _, _ = server.CreateKeyAndLock(server.context, key) - _ = server.SetValue(server.context, key, value) - server.KeyUnlock(server.context, key) -} - func TestEchoVault_LLEN(t *testing.T) { server := NewEchoVault(WithCommands(commands.All())) diff --git a/pkg/echovault/api_sorted_set.go b/pkg/echovault/api_sorted_set.go index 87598ed..c3f0c62 100644 --- a/pkg/echovault/api_sorted_set.go +++ b/pkg/echovault/api_sorted_set.go @@ -40,15 +40,15 @@ type ZUNIONSTOREOptions ZINTEROptions type ZMPOPOptions struct { Min bool Max bool - Count int + Count uint } type ZRANGEOptions struct { - ByScore bool - ByLex bool - Rev bool - Offset int - Count int + WithScores bool + ByScore bool + ByLex bool + Offset uint + Count uint } type ZRANGESTOREOptions ZRANGEOptions @@ -87,8 +87,8 @@ func buildIntegerScoreMap(arr [][]string, withscores bool) (map[int]float64, err return result, nil } -func (server *EchoVault) ZADD(entries map[string]float64, options ZADDOptions) (int, error) { - cmd := []string{"ZADD"} +func (server *EchoVault) ZADD(key string, entries map[string]float64, options ZADDOptions) (int, error) { + cmd := []string{"ZADD", key} switch { case options.NX: @@ -113,7 +113,7 @@ func (server *EchoVault) ZADD(entries map[string]float64, options ZADDOptions) ( } for member, score := range entries { - cmd = append(cmd, []string{member, strconv.FormatFloat(score, 'f', -1, 64)}...) + cmd = append(cmd, []string{strconv.FormatFloat(score, 'f', -1, 64), member}...) } b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false) @@ -191,8 +191,8 @@ func (server *EchoVault) ZINTER(keys []string, options ZINTEROptions) (map[strin if len(options.Weights) > 0 { cmd = append(cmd, "WEIGHTS") - for _, weight := range options.Weights { - cmd = append(cmd, strconv.FormatFloat(float64(weight), 'f', -1, 64)) + for i := 0; i < len(options.Weights); i++ { + cmd = append(cmd, strconv.FormatFloat(options.Weights[i], 'f', -1, 64)) } } @@ -314,7 +314,7 @@ func (server *EchoVault) ZMPOP(keys []string, options ZMPOPOptions) ([][]string, switch { case options.Count != 0: - cmd = append(cmd, []string{"COUNT", strconv.Itoa(options.Count)}...) + cmd = append(cmd, []string{"COUNT", strconv.Itoa(int(options.Count))}...) default: cmd = append(cmd, []string{"COUNT", strconv.Itoa(1)}...) } @@ -327,7 +327,7 @@ func (server *EchoVault) ZMPOP(keys []string, options ZMPOPOptions) ([][]string, return internal.ParseNestedStringArrayResponse(b) } -func (server *EchoVault) ZMSCORE(key string, members ...string) ([]float64, error) { +func (server *EchoVault) ZMSCORE(key string, members ...string) ([]interface{}, error) { cmd := []string{"ZMSCORE", key} for _, member := range members { cmd = append(cmd, member) @@ -343,8 +343,12 @@ func (server *EchoVault) ZMSCORE(key string, members ...string) ([]float64, erro return nil, err } - scores := make([]float64, len(arr)) + scores := make([]interface{}, len(arr)) for i, e := range arr { + if e == "" { + scores[i] = nil + continue + } score, err := strconv.ParseFloat(e, 64) if err != nil { return nil, err @@ -381,7 +385,7 @@ func (server *EchoVault) ZPOPMIN(key string, count int) ([][]string, error) { return internal.ParseNestedStringArrayResponse(b) } -func (server *EchoVault) ZRANDMEMBER(key string, count int, withscores bool) (map[string]float64, error) { +func (server *EchoVault) ZRANDMEMBER(key string, count int, withscores bool) ([][]string, error) { cmd := []string{"ZRANDMEMBER", key} if count != 0 { cmd = append(cmd, strconv.Itoa(count)) @@ -395,12 +399,7 @@ func (server *EchoVault) ZRANDMEMBER(key string, count int, withscores bool) (ma return nil, err } - arr, err := internal.ParseNestedStringArrayResponse(b) - if err != nil { - return nil, err - } - - return buildMemberScoreMap(arr, withscores) + return internal.ParseNestedStringArrayResponse(b) } func (server *EchoVault) ZRANK(key string, member string, withscores bool) (map[int]float64, error) { @@ -414,9 +413,28 @@ func (server *EchoVault) ZRANK(key string, member string, withscores bool) (map[ return nil, err } - arr, err := internal.ParseNestedStringArrayResponse(b) + arr, err := internal.ParseStringArrayResponse(b) - return buildIntegerScoreMap(arr, withscores) + if len(arr) == 0 { + return nil, nil + } + + s, err := strconv.Atoi(arr[0]) + if err != nil { + return nil, err + } + + res := map[int]float64{s: 0} + + if withscores { + f, err := strconv.ParseFloat(arr[1], 64) + if err != nil { + return nil, err + } + res[s] = f + } + + return res, nil } func (server *EchoVault) ZREVRANK(key string, member string, withscores bool) (map[int]float64, error) { @@ -508,11 +526,13 @@ func (server *EchoVault) ZRANGE(key, start, stop string, options ZRANGEOptions) cmd = append(cmd, "BYSCORE") } - if options.Rev { - cmd = append(cmd, "REV") + if options.WithScores { + cmd = append(cmd, "WITHSCORES") } - cmd = append(cmd, []string{"LIMIT", strconv.Itoa(options.Offset), strconv.Itoa(options.Count)}...) + if options.Offset != 0 && options.Count != 0 { + cmd = append(cmd, []string{"LIMIT", strconv.Itoa(int(options.Offset)), strconv.Itoa(int(options.Count))}...) + } b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false) if err != nil { @@ -524,7 +544,7 @@ func (server *EchoVault) ZRANGE(key, start, stop string, options ZRANGEOptions) return nil, err } - return buildMemberScoreMap(arr, true) + return buildMemberScoreMap(arr, options.WithScores) } func (server *EchoVault) ZRANGESTORE(destination, source, start, stop string, options ZRANGESTOREOptions) (int, error) { @@ -539,12 +559,10 @@ func (server *EchoVault) ZRANGESTORE(destination, source, start, stop string, op cmd = append(cmd, "BYSCORE") } - if options.Rev { - cmd = append(cmd, "REV") + if options.Offset != 0 && options.Count != 0 { + cmd = append(cmd, []string{"LIMIT", strconv.Itoa(int(options.Offset)), strconv.Itoa(int(options.Count))}...) } - cmd = append(cmd, []string{"LIMIT", strconv.Itoa(options.Offset), strconv.Itoa(options.Count)}...) - b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false) if err != nil { return 0, err diff --git a/pkg/echovault/api_sorted_set_test.go b/pkg/echovault/api_sorted_set_test.go new file mode 100644 index 0000000..65fb66d --- /dev/null +++ b/pkg/echovault/api_sorted_set_test.go @@ -0,0 +1,3203 @@ +package echovault + +import ( + "github.com/echovault/echovault/internal" + "github.com/echovault/echovault/internal/sorted_set" + "github.com/echovault/echovault/pkg/commands" + "math" + "reflect" + "strconv" + "testing" +) + +func TestEchoVault_ZADD(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue *sorted_set.SortedSet + key string + entries map[string]float64 + options ZADDOptions + want int + wantErr bool + }{ + { + name: "Create new sorted set and return the cardinality of the new sorted set", + preset: false, + presetValue: nil, + key: "key1", + entries: map[string]float64{ + "member1": 5.5, + "member2": 67.77, + "member3": 10, + "member4": math.Inf(-1), + "member5": math.Inf(1), + }, + options: ZADDOptions{}, + want: 5, + wantErr: false, + }, + { + name: "Only add the elements that do not currently exist in the sorted set when NX flag is provided", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key2", + entries: map[string]float64{ + "member1": 5.5, + "member4": 67.77, + "member5": 10, + }, + options: ZADDOptions{NX: true}, + want: 2, + wantErr: false, + }, + { + name: "Do not add any elements when providing existing members with NX flag", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key3", + entries: map[string]float64{ + "member1": 5.5, + "member2": 67.77, + "member3": 10, + }, + options: ZADDOptions{NX: true}, + want: 0, + wantErr: false, + }, + { + name: "Successfully add elements to an existing set when XX flag is provided with existing elements", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key4", + entries: map[string]float64{ + "member1": 55, + "member2": 1005, + "member3": 15, + "member4": 99.75, + }, + options: ZADDOptions{XX: true, CH: true}, + want: 3, + wantErr: false, + }, + { + name: "Fail to add element when providing XX flag with elements that do not exist in the sorted set", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key5", + entries: map[string]float64{ + "member4": 5.5, + "member5": 100.5, + "member6": 15, + }, + options: ZADDOptions{XX: true}, + want: 0, + wantErr: false, + }, + { + // Only update the elements where provided score is greater than current score if GT flag + // Return only the new elements added by default + name: "Only update the elements where provided score is greater than current score if GT flag", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key6", + entries: map[string]float64{ + "member1": 7.5, + "member4": 100.5, + "member5": 15, + }, + options: ZADDOptions{XX: true, CH: true, GT: true}, + want: 1, + wantErr: false, + }, + { + // Only update the elements where provided score is less than current score if LT flag is provided + // Return only the new elements added by default. + name: "Only update the elements where provided score is less than current score if LT flag is provided", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key7", + entries: map[string]float64{ + "member1": 3.5, + "member4": 100.5, + "member5": 15, + }, + options: ZADDOptions{XX: true, LT: true}, + want: 0, + wantErr: false, + }, + { + name: "Return all the elements that were updated AND added when CH flag is provided", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key8", + entries: map[string]float64{ + "member1": 3.5, + "member4": 100.5, + "member5": 15, + }, + options: ZADDOptions{XX: true, LT: true, CH: true}, + want: 1, + wantErr: false, + }, + { + name: "Increment the member by score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key9", + entries: map[string]float64{ + "member3": 5.5, + }, + options: ZADDOptions{INCR: true}, + want: 0, + wantErr: false, + }, + { + name: "Fail when GT/LT flag is provided alongside NX flag", + preset: false, + presetValue: nil, + key: "key10", + entries: map[string]float64{ + "member1": 3.5, + "member5": 15, + }, + options: ZADDOptions{NX: true, LT: true, CH: true}, + want: 0, + wantErr: true, + }, + { + name: "Throw error when INCR flag is passed with more than one score/member pair", + preset: false, + presetValue: nil, + key: "key11", + entries: map[string]float64{ + "member1": 10.5, + "member2": 12.5, + }, + options: ZADDOptions{INCR: true}, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZADD(tt.key, tt.entries, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZADD() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZADD() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZCARD(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + want int + wantErr bool + }{ + { + name: "Get cardinality of valid sorted set", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + }), + key: "key1", + want: 3, + wantErr: false, + }, + { + name: "Return 0 when trying to get cardinality from non-existent key", + preset: false, + presetValue: nil, + key: "key2", + want: 0, + wantErr: false, + }, + { + name: "Return error when not a sorted set", + preset: true, + presetValue: "Default value", + key: "key3", + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZCARD(tt.key) + if (err != nil) != tt.wantErr { + t.Errorf("ZCARD() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZCARD() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZCOUNT(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + min float64 + max float64 + want int + wantErr bool + }{ + { + name: "Get entire count using infinity boundaries", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(1083.13)}, + {Value: "member5", Score: sorted_set.Score(11)}, + {Value: "member6", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member7", Score: sorted_set.Score(math.Inf(1))}, + }), + key: "key1", + min: math.Inf(-1), + max: math.Inf(1), + want: 7, + wantErr: false, + }, + { + name: "Get count of sub-set from -inf to limit", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(1083.13)}, + {Value: "member5", Score: sorted_set.Score(11)}, + {Value: "member6", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member7", Score: sorted_set.Score(math.Inf(1))}, + }), + key: "key2", + min: math.Inf(-1), + max: 90, + want: 5, + wantErr: false, + }, + { + name: "Get count of sub-set from bottom boundary to +inf limit", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(1083.13)}, + {Value: "member5", Score: sorted_set.Score(11)}, + {Value: "member6", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member7", Score: sorted_set.Score(math.Inf(1))}, + }), + key: "key3", + min: 1000, + max: math.Inf(1), + want: 2, + wantErr: false, + }, + { + name: "Throw error when value at the key is not a sorted set", + preset: true, + presetValue: "Default value", + key: "key4", + min: 1, + max: 10, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZCOUNT(tt.key, tt.min, tt.max) + if (err != nil) != tt.wantErr { + t.Errorf("ZCOUNT() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZCOUNT() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZDIFF(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + withscores bool + keys []string + want map[string]float64 + wantErr bool + }{ + { + name: "Get the difference between 2 sorted sets without scores", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, + }), + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, + {Value: "eight", Score: 8}, + }), + }, + withscores: false, + keys: []string{"key1", "key2"}, + want: map[string]float64{"one": 0, "two": 0}, + wantErr: false, + }, + { + name: "Get the difference between 2 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, + }), + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, + {Value: "eight", Score: 8}, + }), + }, + withscores: true, + keys: []string{"key3", "key4"}, + want: map[string]float64{"one": 1, "two": 2}, + wantErr: false, + }, + { + name: "Get the difference between 3 sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + withscores: true, + keys: []string{"key5", "key6", "key7"}, + want: map[string]float64{"three": 3, "four": 4, "five": 5, "six": 6}, + wantErr: false, + }, + { + name: "Return sorted set if only one key exists and is a sorted set", + preset: true, + presetValues: map[string]interface{}{ + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + withscores: true, + keys: []string{"key8", "non-existent-key-1", "non-existent-key-2", "non-existent-key-3"}, + want: map[string]float64{ + "one": 1, "two": 2, "three": 3, "four": 4, + "five": 5, "six": 6, "seven": 7, "eight": 8, + }, + wantErr: false, + }, + { + name: "Throw error when one of the keys is not a sorted set", + preset: true, + presetValues: map[string]interface{}{ + "key9": "Default value", + "key10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + withscores: false, + keys: []string{"key9", "key10", "key11"}, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZDIFF(tt.withscores, tt.keys...) + if (err != nil) != tt.wantErr { + t.Errorf("ZDIFF() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ZDIFF() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZDIFFSTORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + destination string + keys []string + want int + wantErr bool + }{ + { + name: "Get the difference between 2 sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination1", + keys: []string{"key1", "key2"}, + want: 2, + wantErr: false, + }, + { + name: "Get the difference between 3 sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination2", + keys: []string{"key3", "key4", "key5"}, + want: 4, + wantErr: false, + }, + { + name: "Return base sorted set element if base set is the only existing key provided and is a valid sorted set", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination3", + keys: []string{"key6", "non-existent-key-1", "non-existent-key-2"}, + want: 8, + wantErr: false, + }, + { + name: "Throw error when base sorted set is not a set", + preset: true, + presetValues: map[string]interface{}{ + "key7": "Default value", + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination4", + keys: []string{"key7", "key8", "key9"}, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZDIFFSTORE(tt.destination, tt.keys...) + if (err != nil) != tt.wantErr { + t.Errorf("ZDIFFSTORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZDIFFSTORE() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZINCRBY(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + increment float64 + member string + want float64 + wantErr bool + }{ + { + name: "Successfully increment by int. Return the new score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key1", + increment: 5, + member: "one", + want: 6, + wantErr: false, + }, + { + name: "Successfully increment by float. Return new score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key2", + increment: 346.785, + member: "one", + want: 347.785, + }, + { + name: "Increment on non-existent sorted set will create the set with the member and increment as its score", + preset: false, + presetValue: nil, + key: "key3", + increment: 346.785, + member: "one", + want: 346.785, + wantErr: false, + }, + { // 4. + name: "Increment score to +inf", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key4", + increment: math.Inf(1), + member: "one", + want: math.Inf(1), + wantErr: false, + }, + { + name: "Increment score to -inf", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key5", + increment: math.Inf(-1), + member: "one", + want: math.Inf(-1), + wantErr: false, + }, + { + name: "Incrementing score by negative increment should lower the score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key6", + increment: -2.5, + member: "five", + want: 2.5, + wantErr: false, + }, + { + name: "Return error when attempting to increment on a value that is not a valid sorted set", + preset: true, + presetValue: "Default value", + key: "key7", + increment: -2.5, + member: "five", + want: 0, + wantErr: true, + }, + { + name: "Return error when trying to increment a member that already has score -inf", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(-1))}, + }), + key: "key8", + increment: 2.5, + member: "one", + want: 0, + wantErr: true, + }, + { + name: "Return error when trying to increment a member that already has score +inf", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(1))}, + }), + key: "key9", + increment: 2.5, + member: "one", + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZINCRBY(tt.key, tt.increment, tt.member) + if (err != nil) != tt.wantErr { + t.Errorf("ZINCRBY() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZINCRBY() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZINTER(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + keys []string + options ZINTEROptions + want map[string]float64 + wantErr bool + }{ + { + name: "Get the intersection between 2 sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + keys: []string{"key1", "key2"}, + options: ZINTEROptions{}, + want: map[string]float64{"three": 0, "four": 0, "five": 0}, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // By default, the SUM aggregate will be used. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, + }), + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key3", "key4", "key5"}, + options: ZINTEROptions{WithScores: true}, + want: map[string]float64{"one": 3, "eight": 24}, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MIN aggregate. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key6", "key7", "key8"}, + options: ZINTEROptions{Aggregate: "MIN", WithScores: true}, + want: map[string]float64{"one": 1, "eight": 8}, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MAX aggregate. + preset: true, + presetValues: map[string]interface{}{ + "key9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key9", "key10", "key11"}, + options: ZINTEROptions{WithScores: true, Aggregate: "MAX"}, + want: map[string]float64{"one": 1000, "eight": 800}, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use SUM aggregate with weights modifier. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key12", "key13", "key14"}, + options: ZINTEROptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 5, 3}}, + want: map[string]float64{"one": 3105, "eight": 2808}, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MAX aggregate with added weights. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key15", "key16", "key17"}, + options: ZINTEROptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 5, 3}}, + want: map[string]float64{"one": 3000, "eight": 2400}, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MIN aggregate with added weights. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key18", "key19", "key20"}, + options: ZINTEROptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 5, 3}}, + want: map[string]float64{"one": 5, "eight": 8}, + wantErr: false, + }, + { + name: "Throw an error if there are more weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{"key21", "key22"}, + options: ZINTEROptions{Weights: []float64{1, 2, 3}}, + want: nil, + wantErr: true, + }, + { + name: "Throw an error if there are fewer weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + }), + "key25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{"key23", "key24", "key25"}, + options: ZINTEROptions{Weights: []float64{5, 4}}, + want: nil, + wantErr: true, + }, + { + name: "Throw an error if there are no keys provided", + preset: true, + presetValues: map[string]interface{}{ + "key26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "key27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "key28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{}, + options: ZINTEROptions{}, + want: nil, + wantErr: true, + }, + { + name: "Throw an error if any of the provided keys are not sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key30": "Default value", + "key31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{"key29", "key30", "key31"}, + options: ZINTEROptions{}, + want: nil, + wantErr: true, + }, + { + name: "If any of the keys does not exist, return an empty array", + preset: true, + presetValues: map[string]interface{}{ + "key32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"non-existent", "key32", "key33"}, + options: ZINTEROptions{}, + want: map[string]float64{}, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZINTER(tt.keys, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZINTER() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ZINTER() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZINTERSTORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + destination string + keys []string + options ZINTERSTOREOptions + want int + wantErr bool + }{ + { + name: "Get the intersection between 2 sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination1", + keys: []string{"key1", "key2"}, + options: ZINTERSTOREOptions{}, + want: 3, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // By default, the SUM aggregate will be used. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, + }), + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination2", + keys: []string{"key3", "key4", "key5"}, + options: ZINTERSTOREOptions{WithScores: true}, + want: 2, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MIN aggregate. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination3", + keys: []string{"key6", "key7", "key8"}, + options: ZINTERSTOREOptions{WithScores: true, Aggregate: "MIN"}, + want: 2, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MAX aggregate. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination4", + keys: []string{"key9", "key10", "key11"}, + options: ZINTERSTOREOptions{WithScores: true, Aggregate: "MAX"}, + want: 2, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use SUM aggregate with weights modifier. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination5", + keys: []string{"key12", "key13", "key14"}, + options: ZINTERSTOREOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 5, 3}}, + want: 2, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MAX aggregate with added weights. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination6", + keys: []string{"key15", "key16", "key17"}, + options: ZINTERSTOREOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 5, 3}}, + want: 2, + wantErr: false, + }, + { + // Get the intersection between 3 sorted sets with scores. + // Use MIN aggregate with added weights. + name: "Get the intersection between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination7", + keys: []string{"key18", "key19", "key20"}, + options: ZINTERSTOREOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 5, 3}}, + want: 2, + wantErr: false, + }, + { + name: "Throw an error if there are more weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination8", + keys: []string{"key21", "key22"}, + options: ZINTERSTOREOptions{Weights: []float64{1, 2, 3}}, + want: 0, + wantErr: true, + }, + { + name: "Throw an error if there are fewer weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + }), + "key25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination9", + keys: []string{"key23", "key24"}, + options: ZINTERSTOREOptions{Weights: []float64{5}}, + want: 0, + wantErr: true, + }, + { + name: "Throw an error if there are no keys provided", + preset: true, + presetValues: map[string]interface{}{ + "key26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "key27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "key28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination10", + keys: []string{}, + options: ZINTERSTOREOptions{Weights: []float64{5, 4}}, + want: 0, + wantErr: true, + }, + { + name: "Throw an error if any of the provided keys are not sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key30": "Default value", + "key31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination11", + keys: []string{"key29", "key30", "key31"}, + options: ZINTERSTOREOptions{}, + want: 0, + wantErr: true, + }, + { + name: "If any of the keys does not exist, return an empty array", + preset: true, + presetValues: map[string]interface{}{ + "key32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination12", + keys: []string{"non-existent", "key32", "key33"}, + options: ZINTERSTOREOptions{}, + want: 0, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZINTERSTORE(tt.destination, tt.keys, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZINTERSTORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZINTERSTORE() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZLEXCOUNT(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + min string + max string + want int + wantErr bool + }{ + { + name: "Get entire count using infinity boundaries", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "e", Score: sorted_set.Score(1)}, + {Value: "f", Score: sorted_set.Score(1)}, + {Value: "g", Score: sorted_set.Score(1)}, + {Value: "h", Score: sorted_set.Score(1)}, + {Value: "i", Score: sorted_set.Score(1)}, + {Value: "j", Score: sorted_set.Score(1)}, + {Value: "k", Score: sorted_set.Score(1)}, + }), + key: "key1", + min: "f", + max: "j", + want: 5, + wantErr: false, + }, + { + name: "Return 0 when the members do not have the same score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: sorted_set.Score(5.5)}, + {Value: "b", Score: sorted_set.Score(67.77)}, + {Value: "c", Score: sorted_set.Score(10)}, + {Value: "d", Score: sorted_set.Score(1083.13)}, + {Value: "e", Score: sorted_set.Score(11)}, + {Value: "f", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "g", Score: sorted_set.Score(math.Inf(1))}, + }), + key: "key2", + min: "a", + max: "b", + want: 0, + wantErr: false, + }, + { + name: "Return 0 when the key does not exist", + preset: false, + presetValue: nil, + key: "key3", + min: "a", + max: "z", + want: 0, + wantErr: false, + }, + { + name: "Return error when the value at the key is not a sorted set", + preset: true, + presetValue: "Default value", + key: "key4", + min: "a", + max: "z", + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZLEXCOUNT(tt.key, tt.min, tt.max) + if (err != nil) != tt.wantErr { + t.Errorf("ZLEXCOUNT() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZLEXCOUNT() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZMPOP(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + keys []string + options ZMPOPOptions + want [][]string + wantErr bool + }{ + { + name: "Successfully pop one min element by default", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + }, + keys: []string{"key1"}, + options: ZMPOPOptions{}, + want: [][]string{ + {"one", "1"}, + }, + wantErr: false, + }, + { + name: "Successfully pop one min element by specifying MIN", + preset: true, + presetValues: map[string]interface{}{ + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + }, + keys: []string{"key2"}, + options: ZMPOPOptions{Min: true}, + want: [][]string{ + {"one", "1"}, + }, + wantErr: false, + }, + { + name: "Successfully pop one max element by specifying MAX modifier", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + }, + keys: []string{"key3"}, + options: ZMPOPOptions{Max: true}, + want: [][]string{ + {"five", "5"}, + }, + wantErr: false, + }, + { + name: "Successfully pop multiple min elements", + preset: true, + presetValues: map[string]interface{}{ + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + }), + }, + keys: []string{"key4"}, + options: ZMPOPOptions{Min: true, Count: 5}, + want: [][]string{ + {"one", "1"}, {"two", "2"}, {"three", "3"}, + {"four", "4"}, {"five", "5"}, + }, + wantErr: false, + }, + { + name: "Successfully pop multiple max elements", + preset: true, + presetValues: map[string]interface{}{ + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + }), + }, + keys: []string{"key5"}, + options: ZMPOPOptions{Max: true, Count: 5}, + want: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}}, + wantErr: false, + }, + { + name: "Successfully pop elements from the first set which is non-empty", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{}), + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + }), + }, + keys: []string{"key6", "key7"}, + options: ZMPOPOptions{Max: true, Count: 5}, + want: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}}, + wantErr: false, + }, + { + name: "Skip the non-set items and pop elements from the first non-empty sorted set found", + preset: true, + presetValues: map[string]interface{}{ + "key8": "Default value", + "key9": 56, + "key10": sorted_set.NewSortedSet([]sorted_set.MemberParam{}), + "key11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + }), + }, + keys: []string{"key8", "key9", "key10", "key11"}, + options: ZMPOPOptions{Min: true, Count: 5}, + want: [][]string{{"one", "1"}, {"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}}, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZMPOP(tt.keys, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZMPOP() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !internal.CompareNestedStringArrays(got, tt.want) { + t.Errorf("ZMPOP() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZMSCORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + members []string + want []interface{} + wantErr bool + }{ + { // Return multiple scores from the sorted set. + // Return nil for elements that do not exist in the sorted set. + name: "Return multiple scores from the sorted set", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, + }), + key: "key1", + members: []string{"one", "none", "two", "one", "three", "four", "none", "five"}, + want: []interface{}{"1.1", nil, "245", "1.1", "3", "4.055", nil, "5"}, + wantErr: false, + }, + { + name: "If key does not exist, return empty array", + preset: false, + presetValue: nil, + key: "key2", + members: []string{"one", "two", "three", "four"}, + want: []interface{}{}, + wantErr: false, + }, + { + name: "Throw error when trying to find scores from elements that are not sorted sets", + preset: true, + presetValue: "Default value", + key: "key3", + members: []string{"one", "two", "three"}, + want: []interface{}{}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZMSCORE(tt.key, tt.members...) + if (err != nil) != tt.wantErr { + t.Errorf("ZMSCORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if len(got) != len(tt.want) { + t.Errorf("ZMSCORE() got length = %v, want length %v", len(got), len(tt.want)) + return + } + for i := 0; i < len(got); i++ { + if got[i] == nil && tt.want[i] == nil { + continue + } + if (got[i] == nil) != (tt.want[i] == nil) { + t.Errorf("ZMSCORE() got[%d] = %v, want[%d] %v", i, got, i, tt.want) + } + wantf, _ := strconv.ParseFloat(tt.want[i].(string), 64) + if got[i] != wantf { + t.Errorf("ZMSCORE() got[%d] = %v, want[%d] %v", i, got[i], i, wantf) + } + } + }) + } +} + +func TestEchoVault_ZPOP(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + count int + popFunc func(key string, count int) ([][]string, error) + want [][]string + wantErr bool + }{ + { + name: "Successfully pop one min element", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key1", + count: 1, + popFunc: server.ZPOPMIN, + want: [][]string{ + {"one", "1"}, + }, + wantErr: false, + }, + { + name: "Successfully pop one max element", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key2", + count: 1, + popFunc: server.ZPOPMAX, + want: [][]string{{"five", "5"}}, + wantErr: false, + }, + { + name: "Successfully pop multiple min elements", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + }), + popFunc: server.ZPOPMIN, + key: "key3", + count: 5, + want: [][]string{ + {"one", "1"}, {"two", "2"}, {"three", "3"}, + {"four", "4"}, {"five", "5"}, + }, + wantErr: false, + }, + { + name: "Successfully pop multiple max elements", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + }), + popFunc: server.ZPOPMAX, + key: "key4", + count: 5, + want: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}}, + wantErr: false, + }, + { + name: "Throw an error when trying to pop from an element that's not a sorted set", + preset: true, + presetValue: "Default value", + popFunc: server.ZPOPMIN, + key: "key5", + count: 1, + want: [][]string{}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := tt.popFunc(tt.key, tt.count) + if (err != nil) != tt.wantErr { + t.Errorf("ZPOPMAX() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !internal.CompareNestedStringArrays(got, tt.want) { + t.Errorf("ZPOPMAX() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZRANDMEMBER(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + count int + withscores bool + want int + wantErr bool + }{ + { // Return multiple random elements without removing them. + // Count is positive, do not allow repeated elements. + name: "Return multiple random elements without removing them", + preset: true, + key: "key1", + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + count: 3, + withscores: false, + want: 3, + wantErr: false, + }, + { + // Return multiple random elements and their scores without removing them. + // Count is negative, so allow repeated numbers. + name: "Return multiple random elements and their scores without removing them", + preset: true, + key: "key2", + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + count: -5, + withscores: true, + want: 5, + wantErr: false, + }, + { + name: "Return error when the source key is not a sorted set", + preset: true, + key: "key3", + presetValue: "Default value", + count: 1, + withscores: false, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZRANDMEMBER(tt.key, tt.count, tt.withscores) + if (err != nil) != tt.wantErr { + t.Errorf("ZRANDMEMBER() error = %v, wantErr %v", err, tt.wantErr) + return + } + if len(got) != tt.want { + t.Errorf("ZRANDMEMBER() got = %v, want %v", len(got), tt.want) + } + }) + } +} + +func TestEchoVault_ZRANGE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + start string + stop string + options ZRANGEOptions + want map[string]float64 + wantErr bool + }{ + { + name: "Get elements withing score range without score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + key: "key1", + start: "3", + stop: "7", + options: ZRANGEOptions{ByScore: true}, + want: map[string]float64{"three": 0, "four": 0, "five": 0, "six": 0, "seven": 0}, + wantErr: false, + }, + { + name: "Get elements within score range with score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + key: "key2", + start: "3", + stop: "7", + options: ZRANGEOptions{ByScore: true, WithScores: true}, + want: map[string]float64{"three": 3, "four": 4, "five": 5, "six": 6, "seven": 7}, + wantErr: false, + }, + { + // Get elements within score range with offset and limit. + // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). + name: "Get elements within score range with offset and limit", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + key: "key3", + start: "3", + stop: "7", + options: ZRANGEOptions{WithScores: true, ByScore: true, Offset: 2, Count: 4}, + want: map[string]float64{"three": 3, "four": 4, "five": 5}, + wantErr: false, + }, + { + name: "Get elements within lex range without score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, + }), + key: "key4", + start: "c", + stop: "g", + options: ZRANGEOptions{ByLex: true}, + want: map[string]float64{"c": 0, "d": 0, "e": 0, "f": 0, "g": 0}, + wantErr: false, + }, + { + name: "Get elements within lex range with score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, + }), + key: "key5", + start: "a", + stop: "f", + options: ZRANGEOptions{ByLex: true, WithScores: true}, + want: map[string]float64{"a": 1, "b": 1, "c": 1, "d": 1, "e": 1, "f": 1}, + wantErr: false, + }, + { + // Get elements within lex range with offset and limit. + // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). + name: "Get elements within lex range with offset and limit", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, + }), + key: "key6", + start: "a", + stop: "h", + options: ZRANGEOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: map[string]float64{"c": 1, "d": 1, "e": 1}, + wantErr: false, + }, + { + name: "Return an empty map when we use BYLEX while elements have different scores", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 5}, + {Value: "c", Score: 2}, {Value: "d", Score: 6}, + {Value: "e", Score: 3}, {Value: "f", Score: 7}, + {Value: "g", Score: 4}, {Value: "h", Score: 8}, + }), + key: "key7", + start: "a", + stop: "h", + options: ZRANGEOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: map[string]float64{}, + wantErr: false, + }, + { + name: "Throw error when the key does not hold a sorted set", + preset: true, + presetValue: "Default value", + key: "key10", + start: "a", + stop: "h", + options: ZRANGEOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZRANGE(tt.key, tt.start, tt.stop, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZRANGE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ZRANGE() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZRANGESTORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + destination string + source string + start string + stop string + options ZRANGESTOREOptions + want int + wantErr bool + }{ + { + name: "Get elements within score range without score", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination1", + source: "key1", + start: "3", + stop: "7", + options: ZRANGESTOREOptions{ByScore: true}, + want: 5, + wantErr: false, + }, + { + name: "Get elements within score range with score", + preset: true, + presetValues: map[string]interface{}{ + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination2", + source: "key2", + start: "3", + stop: "7", + options: ZRANGESTOREOptions{WithScores: true, ByScore: true}, + want: 5, + wantErr: false, + }, + { + // Get elements within score range with offset and limit. + // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). + name: "Get elements within score range with offset and limit", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination3", + source: "key3", + start: "3", + stop: "7", + options: ZRANGESTOREOptions{ByScore: true, WithScores: true, Offset: 2, Count: 4}, + want: 3, + wantErr: false, + }, + { + name: "Get elements within lex range without score", + preset: true, + presetValues: map[string]interface{}{ + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, + }), + }, + destination: "destination4", + source: "key4", + start: "c", + stop: "g", + options: ZRANGESTOREOptions{ByLex: true}, + want: 5, + wantErr: false, + }, + { + name: "Get elements within lex range with score", + preset: true, + presetValues: map[string]interface{}{ + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, + }), + }, + destination: "destination5", + source: "key5", + start: "a", + stop: "f", + options: ZRANGESTOREOptions{ByLex: true, WithScores: true}, + want: 6, + wantErr: false, + }, + { + // Get elements within lex range with offset and limit. + // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). + name: "Get elements within lex range with offset and limit", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, + }), + }, + destination: "destination6", + source: "key6", + start: "a", + stop: "h", + options: ZRANGESTOREOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: 3, + wantErr: false, + }, + { + // Get elements within lex range with offset and limit + reverse the results. + // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). + // REV reverses the original set before getting the range. + name: "Get elements within lex range with offset and limit + reverse the results", + preset: true, + presetValues: map[string]interface{}{ + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, + }), + }, + destination: "destination7", + source: "key7", + start: "a", + stop: "h", + options: ZRANGESTOREOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: 3, + wantErr: false, + }, + { + name: "Return an empty slice when we use BYLEX while elements have different scores", + preset: true, + presetValues: map[string]interface{}{ + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 5}, + {Value: "c", Score: 2}, {Value: "d", Score: 6}, + {Value: "e", Score: 3}, {Value: "f", Score: 7}, + {Value: "g", Score: 4}, {Value: "h", Score: 8}, + }), + }, + destination: "destination8", + source: "key8", + start: "a", + stop: "h", + options: ZRANGESTOREOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: 0, + wantErr: false, + }, + { + name: "Throw error when the key does not hold a sorted set", + preset: true, + presetValues: map[string]interface{}{ + "key9": "Default value", + }, + destination: "destination9", + source: "key9", + start: "a", + stop: "h", + options: ZRANGESTOREOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4}, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZRANGESTORE(tt.destination, tt.source, tt.start, tt.stop, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZRANGESTORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZRANGESTORE() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZRANK(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + member string + withscores bool + want map[int]float64 + wantErr bool + }{ + { + name: "Return element's rank from a sorted set", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + key: "key1", + member: "four", + withscores: false, + want: map[int]float64{3: 0}, + wantErr: false, + }, + { + name: "Return element's rank from a sorted set with its score", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 305.43}, {Value: "four", Score: 411.055}, + {Value: "five", Score: 500}, + }), + key: "key2", + member: "four", + withscores: true, + want: map[int]float64{3: 411.055}, + wantErr: false, + }, + { + name: "If key does not exist, return nil value", + preset: false, + presetValue: nil, + key: "key3", + member: "one", + withscores: false, + want: nil, + wantErr: false, + }, + { + name: "If key exists and is a sorted set, but the member does not exist, return nil", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, + }), + key: "key4", + member: "non-existent", + withscores: false, + want: nil, + wantErr: false, + }, + { + name: "Throw error when trying to find scores from elements that are not sorted sets", + preset: true, + presetValue: "Default value", + key: "key5", + member: "one", + withscores: false, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZRANK(tt.key, tt.member, tt.withscores) + if (err != nil) != tt.wantErr { + t.Errorf("ZRANK() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ZRANK() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZREM(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + members []string + want int + wantErr bool + }{ + { + // Successfully remove multiple elements from sorted set, skipping non-existent members. + // Return deleted count. + name: "Successfully remove multiple elements from sorted set, skipping non-existent members", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + }), + key: "key1", + members: []string{"three", "four", "five", "none", "six", "none", "seven"}, + want: 5, + wantErr: false, + }, + { + name: "If key does not exist, return 0", + preset: false, + presetValue: nil, + key: "key2", + members: []string{"member"}, + want: 0, + wantErr: false, + }, + { + name: "Return error key is not a sorted set", + preset: true, + presetValue: "Default value", + key: "key3", + members: []string{"member"}, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZREM(tt.key, tt.members...) + if (err != nil) != tt.wantErr { + t.Errorf("ZREM() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZREM() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZREMRANGEBYSCORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + min float64 + max float64 + want int + wantErr bool + }{ + { + name: "Successfully remove multiple elements with scores inside the provided range", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + }), + key: "key1", + min: 3, + max: 7, + want: 5, + wantErr: false, + }, + { + name: "If key does not exist, return 0", + preset: false, + key: "key2", + min: 2, + max: 4, + want: 0, + wantErr: false, + }, + { + name: "Return error key is not a sorted set", + preset: true, + presetValue: "Default value", + key: "key3", + min: 2, + max: 4, + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZREMRANGEBYSCORE(tt.key, tt.min, tt.max) + if (err != nil) != tt.wantErr { + t.Errorf("ZREMRANGEBYSCORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZREMRANGEBYSCORE() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZSCORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValue interface{} + key string + member string + want interface{} + wantErr bool + }{ + { + name: "Return score from a sorted set", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, + }), + key: "key1", + member: "four", + want: 4.055, + wantErr: false, + }, + { + name: "If key does not exist, return nil value", + preset: false, + presetValue: nil, + key: "key2", + member: "one", + want: nil, + wantErr: false, + }, + { + name: "If key exists and is a sorted set, but the member does not exist, return nil", + preset: true, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, + }), + key: "key3", + member: "non-existent", + want: nil, + wantErr: false, + }, + { + name: "Throw error when trying to find scores from elements that are not sorted sets", + preset: true, + presetValue: "Default value", + key: "key4", + member: "one", + want: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + presetValue(server, tt.key, tt.presetValue) + } + got, err := server.ZSCORE(tt.key, tt.member) + if (err != nil) != tt.wantErr { + t.Errorf("ZSCORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ZSCORE() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZUNION(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + keys []string + options ZUNIONOptions + want map[string]float64 + wantErr bool + }{ + { + name: "Get the union between 2 sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + keys: []string{"key1", "key2"}, + options: ZUNIONOptions{}, + want: map[string]float64{ + "one": 0, "two": 0, "three": 0, "four": 0, + "five": 0, "six": 0, "seven": 0, "eight": 0, + }, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // By default, the SUM aggregate will be used. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, + }), + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 36}, + }), + }, + keys: []string{"key3", "key4", "key5"}, + options: ZUNIONOptions{WithScores: true}, + want: map[string]float64{ + "one": 3, "two": 4, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 24, "nine": 9, + "ten": 10, "eleven": 11, "twelve": 24, "thirty-six": 72, + }, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MIN aggregate. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, + }), + }, + keys: []string{"key6", "key7", "key8"}, + options: ZUNIONOptions{WithScores: true, Aggregate: "MIN"}, + want: map[string]float64{ + "one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9, + "ten": 10, "eleven": 11, "twelve": 12, "thirty-six": 36, + }, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MAX aggregate. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, + }), + }, + keys: []string{"key9", "key10", "key11"}, + options: ZUNIONOptions{WithScores: true, Aggregate: "MAX"}, + want: map[string]float64{ + "one": 1000, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 800, "nine": 9, + "ten": 10, "eleven": 11, "twelve": 12, "thirty-six": 72, + }, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use SUM aggregate with weights modifier. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key12", "key13", "key14"}, + options: ZUNIONOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 2, 3}}, + want: map[string]float64{ + "one": 3102, "two": 6, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 2568, + "nine": 27, "ten": 30, "eleven": 22, "twelve": 60, "thirty-six": 72, + }, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MAX aggregate with added weights. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key15", "key16", "key17"}, + options: ZUNIONOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 2, 3}}, + want: map[string]float64{ + "one": 3000, "two": 4, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 2400, + "nine": 27, "ten": 30, "eleven": 22, "twelve": 36, "thirty-six": 72, + }, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MIN aggregate with added weights. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"key18", "key19", "key20"}, + options: ZUNIONOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 2, 3}}, + want: map[string]float64{ + "one": 2, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 27, + "ten": 30, "eleven": 22, "twelve": 24, "thirty-six": 72, + }, + wantErr: false, + }, + { + name: "Throw an error if there are more weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{"key21", "key22"}, + options: ZUNIONOptions{Weights: []float64{1, 2, 3}}, + want: nil, + wantErr: true, + }, + { + name: "Throw an error if there are fewer weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + }), + "key25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{"key23", "key24", "key25"}, + options: ZUNIONOptions{Weights: []float64{5, 4}}, + want: nil, + wantErr: true, + }, + { + name: "Throw an error if there are no keys provided", + preset: true, + presetValues: map[string]interface{}{ + "key26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "key27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "key28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{}, + options: ZUNIONOptions{Weights: []float64{5, 4}}, + want: nil, + wantErr: true, + }, + { + name: "Throw an error if any of the provided keys are not sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key30": "Default value", + "key31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + keys: []string{"key29", "key30", "key31"}, + options: ZUNIONOptions{}, + want: nil, + wantErr: true, + }, + { + name: "If any of the keys does not exist, skip it", + preset: true, + presetValues: map[string]interface{}{ + "key32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + keys: []string{"non-existent", "key32", "key33"}, + options: ZUNIONOptions{}, + want: map[string]float64{ + "one": 0, "two": 0, "thirty-six": 0, "twelve": 0, "eleven": 0, + "seven": 0, "eight": 0, "nine": 0, "ten": 0, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZUNION(tt.keys, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZUNION() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ZUNION() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestEchoVault_ZUNIONSTORE(t *testing.T) { + server := NewEchoVault(WithCommands(commands.All())) + + tests := []struct { + name string + preset bool + presetValues map[string]interface{} + destination string + keys []string + options ZUNIONSTOREOptions + want int + wantErr bool + }{ + { + name: "Get the union between 2 sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + }), + "key2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + }, + destination: "destination1", + keys: []string{"key1", "key2"}, + options: ZUNIONSTOREOptions{}, + want: 8, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // By default, the SUM aggregate will be used. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, + }), + "key5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 36}, + }), + }, + destination: "destination2", + keys: []string{"key3", "key4", "key5"}, + options: ZUNIONSTOREOptions{WithScores: true}, + want: 13, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MIN aggregate. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, + }), + }, + destination: "destination3", + keys: []string{"key6", "key7", "key8"}, + options: ZUNIONSTOREOptions{WithScores: true, Aggregate: "MIN"}, + want: 13, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MAX aggregate. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, + }), + }, + destination: "destination4", + keys: []string{"key9", "key10", "key11"}, + options: ZUNIONSTOREOptions{WithScores: true, Aggregate: "MAX"}, + want: 13, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use SUM aggregate with weights modifier. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination5", + keys: []string{"key12", "key13", "key14"}, + options: ZUNIONSTOREOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 2, 3}}, + want: 13, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MAX aggregate with added weights. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination6", + keys: []string{"key15", "key16", "key17"}, + options: ZUNIONSTOREOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 2, 3}}, + want: 13, + wantErr: false, + }, + { + // Get the union between 3 sorted sets with scores. + // Use MIN aggregate with added weights. + name: "Get the union between 3 sorted sets with scores", + preset: true, + presetValues: map[string]interface{}{ + "key18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, + }), + "key20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination7", + keys: []string{"destination7", "key18", "key19", "key20"}, + options: ZUNIONSTOREOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 2, 3}}, + want: 13, + wantErr: false, + }, + { + name: "Throw an error if there are more weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination8", + keys: []string{"key21", "key22"}, + options: ZUNIONSTOREOptions{Weights: []float64{1, 2, 3}}, + want: 0, + wantErr: true, + }, + { + name: "Throw an error if there are fewer weights than keys", + preset: true, + presetValues: map[string]interface{}{ + "key23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + }), + "key25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination9", + keys: []string{"key23", "key24", "key25"}, + options: ZUNIONSTOREOptions{Weights: []float64{5, 4}}, + want: 0, + wantErr: true, + }, + { + name: "Throw an error if any of the provided keys are not sorted sets", + preset: true, + presetValues: map[string]interface{}{ + "key29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + }), + "key30": "Default value", + "key31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + }, + destination: "destination11", + keys: []string{"key29", "key30", "key31"}, + options: ZUNIONSTOREOptions{}, + want: 0, + wantErr: true, + }, + { + name: "If any of the keys does not exist, skip it", + preset: true, + presetValues: map[string]interface{}{ + "key32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, + }), + "key33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, + }), + }, + destination: "destination12", + keys: []string{"non-existent", "key32", "key33"}, + want: 9, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.preset { + for k, v := range tt.presetValues { + presetValue(server, k, v) + } + } + got, err := server.ZUNIONSTORE(tt.destination, tt.keys, tt.options) + if (err != nil) != tt.wantErr { + t.Errorf("ZUNIONSTORE() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ZUNIONSTORE() got = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/pkg/echovault/keyspace.go b/pkg/echovault/keyspace.go index b9a9768..bcda4df 100644 --- a/pkg/echovault/keyspace.go +++ b/pkg/echovault/keyspace.go @@ -565,3 +565,9 @@ func (server *EchoVault) evictKeysWithExpiredTTL(ctx context.Context) error { return nil } + +func presetValue(server *EchoVault, key string, value interface{}) { + _, _ = server.CreateKeyAndLock(server.context, key) + _ = server.SetValue(server.context, key, value) + server.KeyUnlock(server.context, key) +} diff --git a/pkg/modules/sorted_set/commands.go b/pkg/modules/sorted_set/commands.go index ea7a147..3ce665f 100644 --- a/pkg/modules/sorted_set/commands.go +++ b/pkg/modules/sorted_set/commands.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" "github.com/echovault/echovault/internal" + "github.com/echovault/echovault/internal/sorted_set" "github.com/echovault/echovault/pkg/utils" "math" "net" @@ -63,7 +64,7 @@ func handleZADD(ctx context.Context, cmd []string, server utils.EchoVault, conn return nil, errors.New("score/member pairs must be float/string") } - var members []MemberParam + var members []sorted_set.MemberParam for i := 0; i < len(cmd[membersStartIndex:]); i++ { if i%2 != 0 { @@ -77,29 +78,29 @@ func handleZADD(ctx context.Context, cmd []string, server utils.EchoVault, conn var s float64 if strings.ToLower(score.(string)) == "-inf" { s = math.Inf(-1) - members = append(members, MemberParam{ - value: Value(cmd[membersStartIndex:][i+1]), - score: Score(s), + members = append(members, sorted_set.MemberParam{ + Value: sorted_set.Value(cmd[membersStartIndex:][i+1]), + Score: sorted_set.Score(s), }) } if strings.ToLower(score.(string)) == "+inf" { s = math.Inf(1) - members = append(members, MemberParam{ - value: Value(cmd[membersStartIndex:][i+1]), - score: Score(s), + members = append(members, sorted_set.MemberParam{ + Value: sorted_set.Value(cmd[membersStartIndex:][i+1]), + Score: sorted_set.Score(s), }) } case float64: s, _ := score.(float64) - members = append(members, MemberParam{ - value: Value(cmd[membersStartIndex:][i+1]), - score: Score(s), + members = append(members, sorted_set.MemberParam{ + Value: sorted_set.Value(cmd[membersStartIndex:][i+1]), + Score: sorted_set.Score(s), }) case int: s, _ := score.(int) - members = append(members, MemberParam{ - value: Value(cmd[membersStartIndex:][i+1]), - score: Score(s), + members = append(members, sorted_set.MemberParam{ + Value: sorted_set.Value(cmd[membersStartIndex:][i+1]), + Score: sorted_set.Score(s), }) } } @@ -148,7 +149,7 @@ func handleZADD(ctx context.Context, cmd []string, server utils.EchoVault, conn return nil, err } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -158,8 +159,8 @@ func handleZADD(ctx context.Context, cmd []string, server utils.EchoVault, conn } // If INCR option is provided, return the new score value if incr != nil { - m := set.Get(members[0].value) - return []byte(fmt.Sprintf("+%f\r\n", m.score)), nil + m := set.Get(members[0].Value) + return []byte(fmt.Sprintf("+%f\r\n", m.Score)), nil } return []byte(fmt.Sprintf(":%d\r\n", count)), nil @@ -171,7 +172,7 @@ func handleZADD(ctx context.Context, cmd []string, server utils.EchoVault, conn } defer server.KeyUnlock(ctx, key) - set := NewSortedSet(members) + set := sorted_set.NewSortedSet(members) if err = server.SetValue(ctx, key, set); err != nil { return nil, err } @@ -195,7 +196,7 @@ func handleZCARD(ctx context.Context, cmd []string, server utils.EchoVault, conn } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -211,40 +212,40 @@ func handleZCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, con key := keys[0] - minimum := Score(math.Inf(-1)) + minimum := sorted_set.Score(math.Inf(-1)) switch internal.AdaptType(cmd[2]).(type) { default: return nil, errors.New("min constraint must be a double") case string: if strings.ToLower(cmd[2]) == "+inf" { - minimum = Score(math.Inf(1)) + minimum = sorted_set.Score(math.Inf(1)) } else { return nil, errors.New("min constraint must be a double") } case float64: s, _ := internal.AdaptType(cmd[2]).(float64) - minimum = Score(s) + minimum = sorted_set.Score(s) case int: s, _ := internal.AdaptType(cmd[2]).(int) - minimum = Score(s) + minimum = sorted_set.Score(s) } - maximum := Score(math.Inf(1)) + maximum := sorted_set.Score(math.Inf(1)) switch internal.AdaptType(cmd[3]).(type) { default: return nil, errors.New("max constraint must be a double") case string: if strings.ToLower(cmd[3]) == "-inf" { - maximum = Score(math.Inf(-1)) + maximum = sorted_set.Score(math.Inf(-1)) } else { return nil, errors.New("max constraint must be a double") } case float64: s, _ := internal.AdaptType(cmd[3]).(float64) - maximum = Score(s) + maximum = sorted_set.Score(s) case int: s, _ := internal.AdaptType(cmd[3]).(int) - maximum = Score(s) + maximum = sorted_set.Score(s) } if !server.KeyExists(ctx, key) { @@ -256,14 +257,14 @@ func handleZCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, con } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } - var members []MemberParam + var members []sorted_set.MemberParam for _, m := range set.GetAll() { - if m.score >= minimum && m.score <= maximum { + if m.Score >= minimum && m.Score <= maximum { members = append(members, m) } } @@ -271,7 +272,7 @@ func handleZCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, con return []byte(fmt.Sprintf(":%d\r\n", len(members))), nil } -func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { +func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := zlexcountKeyFunc(cmd) if err != nil { return nil, err @@ -290,7 +291,7 @@ func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -299,7 +300,7 @@ func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, // Check if all members has the same score for i := 0; i < len(members)-2; i++ { - if members[i].score != members[i+1].score { + if members[i].Score != members[i+1].Score { return []byte(":0\r\n"), nil } } @@ -307,8 +308,8 @@ func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, count := 0 for _, m := range members { - if slices.Contains([]int{1, 0}, compareLex(string(m.value), minimum)) && - slices.Contains([]int{-1, 0}, compareLex(string(m.value), maximum)) { + if slices.Contains([]int{1, 0}, internal.CompareLex(string(m.Value), minimum)) && + slices.Contains([]int{-1, 0}, internal.CompareLex(string(m.Value), maximum)) { count += 1 } } @@ -347,13 +348,13 @@ func handleZDIFF(ctx context.Context, cmd []string, server utils.EchoVault, conn return nil, err } defer server.KeyRUnlock(ctx, keys[0]) - baseSortedSet, ok := server.GetValue(ctx, keys[0]).(*SortedSet) + baseSortedSet, ok := server.GetValue(ctx, keys[0]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[0]) } // Extract the remaining sets - var sets []*SortedSet + var sets []*sorted_set.SortedSet for i := 1; i < len(keys); i++ { if !server.KeyExists(ctx, keys[i]) { @@ -364,7 +365,7 @@ func handleZDIFF(ctx context.Context, cmd []string, server utils.EchoVault, conn return nil, err } locks[keys[i]] = locked - set, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + set, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[i]) } @@ -378,9 +379,9 @@ func handleZDIFF(ctx context.Context, cmd []string, server utils.EchoVault, conn for _, m := range diff.GetAll() { if includeScores { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } else { - res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.value), m.value) + res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.Value), m.Value) } } @@ -415,19 +416,19 @@ func handleZDIFFSTORE(ctx context.Context, cmd []string, server utils.EchoVault, return nil, err } defer server.KeyRUnlock(ctx, keys[0]) - baseSortedSet, ok := server.GetValue(ctx, keys[0]).(*SortedSet) + baseSortedSet, ok := server.GetValue(ctx, keys[0]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[0]) } - var sets []*SortedSet + var sets []*sorted_set.SortedSet for i := 1; i < len(keys); i++ { if server.KeyExists(ctx, keys[i]) { if _, err = server.KeyRLock(ctx, keys[i]); err != nil { return nil, err } - set, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + set, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[i]) } @@ -462,26 +463,26 @@ func handleZINCRBY(ctx context.Context, cmd []string, server utils.EchoVault, co } key := keys[0] - member := Value(cmd[3]) - var increment Score + member := sorted_set.Value(cmd[3]) + var increment sorted_set.Score switch internal.AdaptType(cmd[2]).(type) { default: return nil, errors.New("increment must be a double") case string: if strings.EqualFold("-inf", strings.ToLower(cmd[2])) { - increment = Score(math.Inf(-1)) + increment = sorted_set.Score(math.Inf(-1)) } else if strings.EqualFold("+inf", strings.ToLower(cmd[2])) { - increment = Score(math.Inf(1)) + increment = sorted_set.Score(math.Inf(1)) } else { return nil, errors.New("increment must be a double") } case float64: s, _ := internal.AdaptType(cmd[2]).(float64) - increment = Score(s) + increment = sorted_set.Score(s) case int: s, _ := internal.AdaptType(cmd[2]).(int) - increment = Score(s) + increment = sorted_set.Score(s) } if !server.KeyExists(ctx, key) { @@ -490,7 +491,11 @@ func handleZINCRBY(ctx context.Context, cmd []string, server utils.EchoVault, co if _, err = server.CreateKeyAndLock(ctx, key); err != nil { return nil, err } - if err = server.SetValue(ctx, key, NewSortedSet([]MemberParam{{value: member, score: increment}})); err != nil { + if err = server.SetValue( + ctx, + key, + sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: member, Score: increment}}), + ); err != nil { return nil, err } server.KeyUnlock(ctx, key) @@ -501,13 +506,13 @@ func handleZINCRBY(ctx context.Context, cmd []string, server utils.EchoVault, co return nil, err } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } if _, err = set.AddOrUpdate( - []MemberParam{ - {value: member, score: increment}}, + []sorted_set.MemberParam{ + {Value: member, Score: increment}}, "xx", nil, nil, @@ -515,7 +520,7 @@ func handleZINCRBY(ctx context.Context, cmd []string, server utils.EchoVault, co return nil, err } return []byte(fmt.Sprintf("+%s\r\n", - strconv.FormatFloat(float64(set.Get(member).score), 'f', -1, 64))), nil + strconv.FormatFloat(float64(set.Get(member).Score), 'f', -1, 64))), nil } func handleZINTER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { @@ -538,7 +543,7 @@ func handleZINTER(ctx context.Context, cmd []string, server utils.EchoVault, con } }() - var setParams []SortedSetParam + var setParams []sorted_set.SortedSetParam for i := 0; i < len(keys); i++ { if !server.KeyExists(ctx, keys[i]) { @@ -549,26 +554,26 @@ func handleZINTER(ctx context.Context, cmd []string, server utils.EchoVault, con return nil, err } locks[keys[i]] = true - set, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + set, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[i]) } - setParams = append(setParams, SortedSetParam{ - set: set, - weight: weights[i], + setParams = append(setParams, sorted_set.SortedSetParam{ + Set: set, + Weight: weights[i], }) } - intersect := Intersect(aggregate, setParams...) + intersect := sorted_set.Intersect(aggregate, setParams...) res := fmt.Sprintf("*%d", intersect.Cardinality()) if intersect.Cardinality() > 0 { for _, m := range intersect.GetAll() { if withscores { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } else { - res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.value), m.value) + res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.Value), m.Value) } } } @@ -605,7 +610,7 @@ func handleZINTERSTORE(ctx context.Context, cmd []string, server utils.EchoVault } }() - var setParams []SortedSetParam + var setParams []sorted_set.SortedSetParam for i := 0; i < len(keys); i++ { if !server.KeyExists(ctx, keys[i]) { @@ -615,17 +620,17 @@ func handleZINTERSTORE(ctx context.Context, cmd []string, server utils.EchoVault return nil, err } locks[keys[i]] = true - set, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + set, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[i]) } - setParams = append(setParams, SortedSetParam{ - set: set, - weight: weights[i], + setParams = append(setParams, sorted_set.SortedSetParam{ + Set: set, + Weight: weights[i], }) } - intersect := Intersect(aggregate, setParams...) + intersect := sorted_set.Intersect(aggregate, setParams...) if server.KeyExists(ctx, destination) && intersect.Cardinality() > 0 { if _, err = server.KeyLock(ctx, destination); err != nil { @@ -696,7 +701,7 @@ func handleZMPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn if _, err = server.KeyLock(ctx, keys[i]); err != nil { continue } - v, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + v, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok || v.Cardinality() == 0 { server.KeyUnlock(ctx, keys[i]) continue @@ -711,7 +716,7 @@ func handleZMPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn res := fmt.Sprintf("*%d", popped.Cardinality()) for _, m := range popped.GetAll() { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } res += "\r\n" @@ -754,7 +759,7 @@ func handleZPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at key %s is not a sorted set", key) } @@ -766,7 +771,7 @@ func handleZPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn res := fmt.Sprintf("*%d", popped.Cardinality()) for _, m := range popped.GetAll() { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } res += "\r\n" @@ -791,7 +796,7 @@ func handleZMSCORE(ctx context.Context, cmd []string, server utils.EchoVault, co } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -800,14 +805,14 @@ func handleZMSCORE(ctx context.Context, cmd []string, server utils.EchoVault, co res := fmt.Sprintf("*%d", len(members)) - var member MemberObject + var member sorted_set.MemberObject for i := 0; i < len(members); i++ { - member = set.Get(Value(members[i])) - if !member.exists { + member = set.Get(sorted_set.Value(members[i])) + if !member.Exists { res = fmt.Sprintf("%s\r\n$-1", res) } else { - res = fmt.Sprintf("%s\r\n+%s", res, strconv.FormatFloat(float64(member.score), 'f', -1, 64)) + res = fmt.Sprintf("%s\r\n+%s", res, strconv.FormatFloat(float64(member.Score), 'f', -1, 64)) } } @@ -850,7 +855,7 @@ func handleZRANDMEMBER(ctx context.Context, cmd []string, server utils.EchoVault } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -860,9 +865,9 @@ func handleZRANDMEMBER(ctx context.Context, cmd []string, server utils.EchoVault res := fmt.Sprintf("*%d", len(members)) for _, m := range members { if withscores { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } else { - res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.value), m.value) + res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.Value), m.Value) } } @@ -871,7 +876,7 @@ func handleZRANDMEMBER(ctx context.Context, cmd []string, server utils.EchoVault return []byte(res), nil } -func handleZRANK(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { +func handleZRANK(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := zrankKeyFunc(cmd) if err != nil { return nil, err @@ -894,23 +899,23 @@ func handleZRANK(ctx context.Context, cmd []string, server utils.EchoVault, conn } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } members := set.GetAll() - slices.SortFunc(members, func(a, b MemberParam) int { + slices.SortFunc(members, func(a, b sorted_set.MemberParam) int { if strings.EqualFold(cmd[0], "zrevrank") { - return cmp.Compare(b.score, a.score) + return cmp.Compare(b.Score, a.Score) } - return cmp.Compare(a.score, b.score) + return cmp.Compare(a.Score, b.Score) }) for i := 0; i < len(members); i++ { - if members[i].value == Value(member) { + if members[i].Value == sorted_set.Value(member) { if withscores { - score := strconv.FormatFloat(float64(members[i].score), 'f', -1, 64) + score := strconv.FormatFloat(float64(members[i].Score), 'f', -1, 64) return []byte(fmt.Sprintf("*2\r\n:%d\r\n$%d\r\n%s\r\n", i, len(score), score)), nil } else { return []byte(fmt.Sprintf("*1\r\n:%d\r\n", i)), nil @@ -938,14 +943,14 @@ func handleZREM(ctx context.Context, cmd []string, server utils.EchoVault, conn } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } deletedCount := 0 for _, m := range cmd[2:] { - if set.Remove(Value(m)) { + if set.Remove(sorted_set.Value(m)) { deletedCount += 1 } } @@ -968,16 +973,16 @@ func handleZSCORE(ctx context.Context, cmd []string, server utils.EchoVault, con return nil, err } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } - member := set.Get(Value(cmd[2])) - if !member.exists { + member := set.Get(sorted_set.Value(cmd[2])) + if !member.Exists { return []byte("$-1\r\n"), nil } - score := strconv.FormatFloat(float64(member.score), 'f', -1, 64) + score := strconv.FormatFloat(float64(member.Score), 'f', -1, 64) return []byte(fmt.Sprintf("$%d\r\n%s\r\n", len(score), score)), nil } @@ -1011,14 +1016,14 @@ func handleZREMRANGEBYSCORE(ctx context.Context, cmd []string, server utils.Echo } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } for _, m := range set.GetAll() { - if m.score >= Score(minimum) && m.score <= Score(maximum) { - set.Remove(m.value) + if m.Score >= sorted_set.Score(minimum) && m.Score <= sorted_set.Score(maximum) { + set.Remove(m.Value) deletedCount += 1 } } @@ -1053,7 +1058,7 @@ func handleZREMRANGEBYRANK(ctx context.Context, cmd []string, server utils.EchoV } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -1070,20 +1075,20 @@ func handleZREMRANGEBYRANK(ctx context.Context, cmd []string, server utils.EchoV } members := set.GetAll() - slices.SortFunc(members, func(a, b MemberParam) int { - return cmp.Compare(a.score, b.score) + slices.SortFunc(members, func(a, b sorted_set.MemberParam) int { + return cmp.Compare(a.Score, b.Score) }) deletedCount := 0 if start < stop { for i := start; i <= stop; i++ { - set.Remove(members[i].value) + set.Remove(members[i].Value) deletedCount += 1 } } else { for i := stop; i <= start; i++ { - set.Remove(members[i].value) + set.Remove(members[i].Value) deletedCount += 1 } } @@ -1110,7 +1115,7 @@ func handleZREMRANGEBYLEX(ctx context.Context, cmd []string, server utils.EchoVa } defer server.KeyUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -1119,7 +1124,7 @@ func handleZREMRANGEBYLEX(ctx context.Context, cmd []string, server utils.EchoVa // Check if all the members have the same score. If not, return 0 for i := 0; i < len(members)-1; i++ { - if members[i].score != members[i+1].score { + if members[i].Score != members[i+1].Score { return []byte(":0\r\n"), nil } } @@ -1128,9 +1133,9 @@ func handleZREMRANGEBYLEX(ctx context.Context, cmd []string, server utils.EchoVa // All the members have the same score for _, m := range members { - if slices.Contains([]int{1, 0}, compareLex(string(m.value), minimum)) && - slices.Contains([]int{-1, 0}, compareLex(string(m.value), maximum)) { - set.Remove(m.value) + if slices.Contains([]int{1, 0}, internal.CompareLex(string(m.Value), minimum)) && + slices.Contains([]int{-1, 0}, internal.CompareLex(string(m.Value), maximum)) { + set.Remove(m.Value) deletedCount += 1 } } @@ -1208,7 +1213,7 @@ func handleZRANGE(ctx context.Context, cmd []string, server utils.EchoVault, con } defer server.KeyRUnlock(ctx, key) - set, ok := server.GetValue(ctx, key).(*SortedSet) + set, ok := server.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", key) } @@ -1222,43 +1227,43 @@ func handleZRANGE(ctx context.Context, cmd []string, server utils.EchoVault, con members := set.GetAll() if strings.EqualFold(policy, "byscore") { - slices.SortFunc(members, func(a, b MemberParam) int { + slices.SortFunc(members, func(a, b sorted_set.MemberParam) int { // Do a score sort if reverse { - return cmp.Compare(b.score, a.score) + return cmp.Compare(b.Score, a.Score) } - return cmp.Compare(a.score, b.score) + return cmp.Compare(a.Score, b.Score) }) } if strings.EqualFold(policy, "bylex") { // If policy is BYLEX, all the elements must have the same score for i := 0; i < len(members)-1; i++ { - if members[i].score != members[i+1].score { + if members[i].Score != members[i+1].Score { return []byte("*0\r\n"), nil } } - slices.SortFunc(members, func(a, b MemberParam) int { + slices.SortFunc(members, func(a, b sorted_set.MemberParam) int { if reverse { - return compareLex(string(b.value), string(a.value)) + return internal.CompareLex(string(b.Value), string(a.Value)) } - return compareLex(string(a.value), string(b.value)) + return internal.CompareLex(string(a.Value), string(b.Value)) }) } - var resultMembers []MemberParam + var resultMembers []sorted_set.MemberParam for i := offset; i <= count; i++ { if i >= len(members) { break } if strings.EqualFold(policy, "byscore") { - if members[i].score >= Score(scoreStart) && members[i].score <= Score(scoreStop) { + if members[i].Score >= sorted_set.Score(scoreStart) && members[i].Score <= sorted_set.Score(scoreStop) { resultMembers = append(resultMembers, members[i]) } continue } - if slices.Contains([]int{1, 0}, compareLex(string(members[i].value), lexStart)) && - slices.Contains([]int{-1, 0}, compareLex(string(members[i].value), lexStop)) { + if slices.Contains([]int{1, 0}, internal.CompareLex(string(members[i].Value), lexStart)) && + slices.Contains([]int{-1, 0}, internal.CompareLex(string(members[i].Value), lexStop)) { resultMembers = append(resultMembers, members[i]) } } @@ -1267,9 +1272,9 @@ func handleZRANGE(ctx context.Context, cmd []string, server utils.EchoVault, con for _, m := range resultMembers { if withscores { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } else { - res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.value), m.value) + res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.Value), m.Value) } } @@ -1345,7 +1350,7 @@ func handleZRANGESTORE(ctx context.Context, cmd []string, server utils.EchoVault } defer server.KeyRUnlock(ctx, source) - set, ok := server.GetValue(ctx, source).(*SortedSet) + set, ok := server.GetValue(ctx, source).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", source) } @@ -1359,48 +1364,48 @@ func handleZRANGESTORE(ctx context.Context, cmd []string, server utils.EchoVault members := set.GetAll() if strings.EqualFold(policy, "byscore") { - slices.SortFunc(members, func(a, b MemberParam) int { + slices.SortFunc(members, func(a, b sorted_set.MemberParam) int { // Do a score sort if reverse { - return cmp.Compare(b.score, a.score) + return cmp.Compare(b.Score, a.Score) } - return cmp.Compare(a.score, b.score) + return cmp.Compare(a.Score, b.Score) }) } if strings.EqualFold(policy, "bylex") { // If policy is BYLEX, all the elements must have the same score for i := 0; i < len(members)-1; i++ { - if members[i].score != members[i+1].score { + if members[i].Score != members[i+1].Score { return []byte(":0\r\n"), nil } } - slices.SortFunc(members, func(a, b MemberParam) int { + slices.SortFunc(members, func(a, b sorted_set.MemberParam) int { if reverse { - return compareLex(string(b.value), string(a.value)) + return internal.CompareLex(string(b.Value), string(a.Value)) } - return compareLex(string(a.value), string(b.value)) + return internal.CompareLex(string(a.Value), string(b.Value)) }) } - var resultMembers []MemberParam + var resultMembers []sorted_set.MemberParam for i := offset; i <= count; i++ { if i >= len(members) { break } if strings.EqualFold(policy, "byscore") { - if members[i].score >= Score(scoreStart) && members[i].score <= Score(scoreStop) { + if members[i].Score >= sorted_set.Score(scoreStart) && members[i].Score <= sorted_set.Score(scoreStop) { resultMembers = append(resultMembers, members[i]) } continue } - if slices.Contains([]int{1, 0}, compareLex(string(members[i].value), lexStart)) && - slices.Contains([]int{-1, 0}, compareLex(string(members[i].value), lexStop)) { + if slices.Contains([]int{1, 0}, internal.CompareLex(string(members[i].Value), lexStart)) && + slices.Contains([]int{-1, 0}, internal.CompareLex(string(members[i].Value), lexStop)) { resultMembers = append(resultMembers, members[i]) } } - newSortedSet := NewSortedSet(resultMembers) + newSortedSet := sorted_set.NewSortedSet(resultMembers) if server.KeyExists(ctx, destination) { if _, err = server.KeyLock(ctx, destination); err != nil { @@ -1439,7 +1444,7 @@ func handleZUNION(ctx context.Context, cmd []string, server utils.EchoVault, con } }() - var setParams []SortedSetParam + var setParams []sorted_set.SortedSetParam for i := 0; i < len(keys); i++ { if server.KeyExists(ctx, keys[i]) { @@ -1447,25 +1452,25 @@ func handleZUNION(ctx context.Context, cmd []string, server utils.EchoVault, con return nil, err } locks[keys[i]] = true - set, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + set, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[i]) } - setParams = append(setParams, SortedSetParam{ - set: set, - weight: weights[i], + setParams = append(setParams, sorted_set.SortedSetParam{ + Set: set, + Weight: weights[i], }) } } - union := Union(aggregate, setParams...) + union := sorted_set.Union(aggregate, setParams...) res := fmt.Sprintf("*%d", union.Cardinality()) for _, m := range union.GetAll() { if withscores { - res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.value), m.value, strconv.FormatFloat(float64(m.score), 'f', -1, 64)) + res += fmt.Sprintf("\r\n*2\r\n$%d\r\n%s\r\n+%s", len(m.Value), m.Value, strconv.FormatFloat(float64(m.Score), 'f', -1, 64)) } else { - res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.value), m.value) + res += fmt.Sprintf("\r\n*1\r\n$%d\r\n%s", len(m.Value), m.Value) } } @@ -1501,7 +1506,7 @@ func handleZUNIONSTORE(ctx context.Context, cmd []string, server utils.EchoVault } }() - var setParams []SortedSetParam + var setParams []sorted_set.SortedSetParam for i := 0; i < len(keys); i++ { if server.KeyExists(ctx, keys[i]) { @@ -1509,18 +1514,18 @@ func handleZUNIONSTORE(ctx context.Context, cmd []string, server utils.EchoVault return nil, err } locks[keys[i]] = true - set, ok := server.GetValue(ctx, keys[i]).(*SortedSet) + set, ok := server.GetValue(ctx, keys[i]).(*sorted_set.SortedSet) if !ok { return nil, fmt.Errorf("value at %s is not a sorted set", keys[i]) } - setParams = append(setParams, SortedSetParam{ - set: set, - weight: weights[i], + setParams = append(setParams, sorted_set.SortedSetParam{ + Set: set, + Weight: weights[i], }) } } - union := Union(aggregate, setParams...) + union := sorted_set.Union(aggregate, setParams...) if server.KeyExists(ctx, destination) { if _, err = server.KeyLock(ctx, destination); err != nil { diff --git a/pkg/modules/sorted_set/commands_test.go b/pkg/modules/sorted_set/commands_test.go index 04010a6..dc33720 100644 --- a/pkg/modules/sorted_set/commands_test.go +++ b/pkg/modules/sorted_set/commands_test.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" "github.com/echovault/echovault/internal/config" + "github.com/echovault/echovault/internal/sorted_set" "github.com/echovault/echovault/pkg/echovault" "github.com/echovault/echovault/pkg/utils" "github.com/tidwall/resp" @@ -43,10 +44,10 @@ func init() { func Test_HandleZADD(t *testing.T) { tests := []struct { preset bool - presetValue *SortedSet + presetValue *sorted_set.SortedSet key string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ @@ -55,152 +56,156 @@ func Test_HandleZADD(t *testing.T) { presetValue: nil, key: "ZaddKey1", command: []string{"ZADD", "ZaddKey1", "5.5", "member1", "67.77", "member2", "10", "member3", "-inf", "member4", "+inf", "member5"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, - {value: "member4", score: Score(math.Inf(-1))}, - {value: "member5", score: Score(math.Inf(1))}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member5", Score: sorted_set.Score(math.Inf(1))}, }), expectedResponse: 5, expectedError: nil, }, { // 2. Only add the elements that do not currently exist in the sorted set when NX flag is provided preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey2", command: []string{"ZADD", "ZaddKey2", "NX", "5.5", "member1", "67.77", "member4", "10", "member5"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, - {value: "member4", score: Score(67.77)}, - {value: "member5", score: Score(10)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(67.77)}, + {Value: "member5", Score: sorted_set.Score(10)}, }), expectedResponse: 2, expectedError: nil, }, { // 3. Do not add any elements when providing existing members with NX flag preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey3", command: []string{"ZADD", "ZaddKey3", "NX", "5.5", "member1", "67.77", "member2", "10", "member3"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), expectedResponse: 0, expectedError: nil, }, { // 4. Successfully add elements to an existing set when XX flag is provided with existing elements preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey4", command: []string{"ZADD", "ZaddKey4", "XX", "CH", "55", "member1", "1005", "member2", "15", "member3", "99.75", "member4"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(55)}, - {value: "member2", score: Score(1005)}, - {value: "member3", score: Score(15)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(55)}, + {Value: "member2", Score: sorted_set.Score(1005)}, + {Value: "member3", Score: sorted_set.Score(15)}, }), expectedResponse: 3, expectedError: nil, }, { // 5. Fail to add element when providing XX flag with elements that do not exist in the sorted set. preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey5", command: []string{"ZADD", "ZaddKey5", "XX", "5.5", "member4", "100.5", "member5", "15", "member6"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), expectedResponse: 0, expectedError: nil, }, - { // 6. Only update the elements where provided score is greater than current score if GT flag + { + // 6. Only update the elements where provided score is greater than current score if GT flag // Return only the new elements added by default preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey6", command: []string{"ZADD", "ZaddKey6", "XX", "CH", "GT", "7.5", "member1", "100.5", "member4", "15", "member5"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(7.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(7.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), expectedResponse: 1, expectedError: nil, }, - { // 7. Only update the elements where provided score is less than current score if LT flag is provided + { + // 7. Only update the elements where provided score is less than current score if LT flag is provided // Return only the new elements added by default. preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey7", command: []string{"ZADD", "ZaddKey7", "XX", "LT", "3.5", "member1", "100.5", "member4", "15", "member5"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(3.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(3.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), expectedResponse: 0, expectedError: nil, }, - { // 8. Return all the elements that were updated AND added when CH flag is provided + { + // 8. Return all the elements that were updated AND added when CH flag is provided preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey8", command: []string{"ZADD", "ZaddKey8", "XX", "LT", "CH", "3.5", "member1", "100.5", "member4", "15", "member5"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(3.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(3.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), expectedResponse: 1, expectedError: nil, }, - { // 9. Increment the member by score + { + // 9. Increment the member by score preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZaddKey9", command: []string{"ZADD", "ZaddKey9", "INCR", "5.5", "member3"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(15.5)}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(15.5)}, }), expectedResponse: 0, expectedError: nil, @@ -277,7 +282,7 @@ func Test_HandleZADD(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.key); err != nil { t.Error(err) } - sortedSet, ok := mockServer.GetValue(ctx, test.key).(*SortedSet) + sortedSet, ok := mockServer.GetValue(ctx, test.key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected the value at key \"%s\" to be a sorted set, got another type", test.key) } @@ -297,16 +302,16 @@ func Test_HandleZCARD(t *testing.T) { presetValue interface{} key string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get cardinality of valid sorted set. preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, }), key: "ZcardKey1", command: []string{"ZCARD", "ZcardKey1"}, @@ -391,20 +396,20 @@ func Test_HandleZCOUNT(t *testing.T) { presetValue interface{} key string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get entire count using infinity boundaries preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, - {value: "member4", score: Score(1083.13)}, - {value: "member5", score: Score(11)}, - {value: "member6", score: Score(math.Inf(-1))}, - {value: "member7", score: Score(math.Inf(1))}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(1083.13)}, + {Value: "member5", Score: sorted_set.Score(11)}, + {Value: "member6", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member7", Score: sorted_set.Score(math.Inf(1))}, }), key: "ZcountKey1", command: []string{"ZCOUNT", "ZcountKey1", "-inf", "+inf"}, @@ -414,14 +419,14 @@ func Test_HandleZCOUNT(t *testing.T) { }, { // 2. Get count of sub-set from -inf to limit preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, - {value: "member4", score: Score(1083.13)}, - {value: "member5", score: Score(11)}, - {value: "member6", score: Score(math.Inf(-1))}, - {value: "member7", score: Score(math.Inf(1))}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(1083.13)}, + {Value: "member5", Score: sorted_set.Score(11)}, + {Value: "member6", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member7", Score: sorted_set.Score(math.Inf(1))}, }), key: "ZcountKey2", command: []string{"ZCOUNT", "ZcountKey2", "-inf", "90"}, @@ -431,14 +436,14 @@ func Test_HandleZCOUNT(t *testing.T) { }, { // 3. Get count of sub-set from bottom boundary to +inf limit preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "member1", score: Score(5.5)}, - {value: "member2", score: Score(67.77)}, - {value: "member3", score: Score(10)}, - {value: "member4", score: Score(1083.13)}, - {value: "member5", score: Score(11)}, - {value: "member6", score: Score(math.Inf(-1))}, - {value: "member7", score: Score(math.Inf(1))}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "member1", Score: sorted_set.Score(5.5)}, + {Value: "member2", Score: sorted_set.Score(67.77)}, + {Value: "member3", Score: sorted_set.Score(10)}, + {Value: "member4", Score: sorted_set.Score(1083.13)}, + {Value: "member5", Score: sorted_set.Score(11)}, + {Value: "member6", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "member7", Score: sorted_set.Score(math.Inf(1))}, }), key: "ZcountKey3", command: []string{"ZCOUNT", "ZcountKey3", "1000", "+inf"}, @@ -532,20 +537,20 @@ func Test_HandleZLEXCOUNT(t *testing.T) { presetValue interface{} key string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get entire count using infinity boundaries preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "e", score: Score(1)}, - {value: "f", score: Score(1)}, - {value: "g", score: Score(1)}, - {value: "h", score: Score(1)}, - {value: "i", score: Score(1)}, - {value: "j", score: Score(1)}, - {value: "k", score: Score(1)}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "e", Score: sorted_set.Score(1)}, + {Value: "f", Score: sorted_set.Score(1)}, + {Value: "g", Score: sorted_set.Score(1)}, + {Value: "h", Score: sorted_set.Score(1)}, + {Value: "i", Score: sorted_set.Score(1)}, + {Value: "j", Score: sorted_set.Score(1)}, + {Value: "k", Score: sorted_set.Score(1)}, }), key: "ZlexCountKey1", command: []string{"ZLEXCOUNT", "ZlexCountKey1", "f", "j"}, @@ -555,14 +560,14 @@ func Test_HandleZLEXCOUNT(t *testing.T) { }, { // 2. Return 0 when the members do not have the same score preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "a", score: Score(5.5)}, - {value: "b", score: Score(67.77)}, - {value: "c", score: Score(10)}, - {value: "d", score: Score(1083.13)}, - {value: "e", score: Score(11)}, - {value: "f", score: Score(math.Inf(-1))}, - {value: "g", score: Score(math.Inf(1))}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: sorted_set.Score(5.5)}, + {Value: "b", Score: sorted_set.Score(67.77)}, + {Value: "c", Score: sorted_set.Score(10)}, + {Value: "d", Score: sorted_set.Score(1083.13)}, + {Value: "e", Score: sorted_set.Score(11)}, + {Value: "f", Score: sorted_set.Score(math.Inf(-1))}, + {Value: "g", Score: sorted_set.Score(math.Inf(1))}, }), key: "ZlexCountKey2", command: []string{"ZLEXCOUNT", "ZlexCountKey2", "a", "b"}, @@ -652,19 +657,19 @@ func Test_HandleZDIFF(t *testing.T) { { // 1. Get the difference between 2 sorted sets without scores. preset: true, presetValues: map[string]interface{}{ - "ZdiffKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, - {value: "two", score: 2}, - {value: "three", score: 3}, - {value: "four", score: 4}, + "ZdiffKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, }), - "ZdiffKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, - {value: "four", score: 4}, - {value: "five", score: 5}, - {value: "six", score: 6}, - {value: "seven", score: 7}, - {value: "eight", score: 8}, + "ZdiffKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, + {Value: "eight", Score: 8}, }), }, command: []string{"ZDIFF", "ZdiffKey1", "ZdiffKey2"}, @@ -674,19 +679,19 @@ func Test_HandleZDIFF(t *testing.T) { { // 2. Get the difference between 2 sorted sets with scores. preset: true, presetValues: map[string]interface{}{ - "ZdiffKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, - {value: "two", score: 2}, - {value: "three", score: 3}, - {value: "four", score: 4}, + "ZdiffKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, }), - "ZdiffKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, - {value: "four", score: 4}, - {value: "five", score: 5}, - {value: "six", score: 6}, - {value: "seven", score: 7}, - {value: "eight", score: 8}, + "ZdiffKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, + {Value: "four", Score: 4}, + {Value: "five", Score: 5}, + {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, + {Value: "eight", Score: 8}, }), }, command: []string{"ZDIFF", "ZdiffKey1", "ZdiffKey2", "WITHSCORES"}, @@ -696,21 +701,21 @@ func Test_HandleZDIFF(t *testing.T) { { // 3. Get the difference between 3 sets with scores. preset: true, presetValues: map[string]interface{}{ - "ZdiffKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZdiffKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZdiffKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZdiffKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZdiffKey5": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZdiffKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZDIFF", "ZdiffKey3", "ZdiffKey4", "ZdiffKey5", "WITHSCORES"}, @@ -720,11 +725,11 @@ func Test_HandleZDIFF(t *testing.T) { { // 3. Return sorted set if only one key exists and is a sorted set preset: true, presetValues: map[string]interface{}{ - "ZdiffKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZdiffKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZDIFF", "ZdiffKey6", "ZdiffKey7", "ZdiffKey8", "WITHSCORES"}, @@ -738,15 +743,15 @@ func Test_HandleZDIFF(t *testing.T) { preset: true, presetValues: map[string]interface{}{ "ZdiffKey9": "Default value", - "ZdiffKey10": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZdiffKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZdiffKey11": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZdiffKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZDIFF", "ZdiffKey9", "ZdiffKey10", "ZdiffKey11"}, @@ -815,55 +820,55 @@ func Test_HandleZDIFFSTORE(t *testing.T) { presetValues map[string]interface{} destination string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get the difference between 2 sorted sets. preset: true, presetValues: map[string]interface{}{ - "ZdiffStoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZdiffStoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), - "ZdiffStoreKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZdiffStoreKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZdiffStoreDestinationKey1", command: []string{"ZDIFFSTORE", "ZdiffStoreDestinationKey1", "ZdiffStoreKey1", "ZdiffStoreKey2"}, - expectedValue: NewSortedSet([]MemberParam{{value: "one", score: 1}, {value: "two", score: 2}}), + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}, {Value: "two", Score: 2}}), expectedResponse: 2, expectedError: nil, }, { // 2. Get the difference between 3 sorted sets. preset: true, presetValues: map[string]interface{}{ - "ZdiffStoreKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZdiffStoreKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZdiffStoreKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZdiffStoreKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZdiffStoreKey5": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZdiffStoreKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZdiffStoreDestinationKey2", command: []string{"ZDIFFSTORE", "ZdiffStoreDestinationKey2", "ZdiffStoreKey3", "ZdiffStoreKey4", "ZdiffStoreKey5"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), expectedResponse: 4, expectedError: nil, @@ -871,20 +876,20 @@ func Test_HandleZDIFFSTORE(t *testing.T) { { // 3. Return base sorted set element if base set is the only existing key provided and is a valid sorted set preset: true, presetValues: map[string]interface{}{ - "ZdiffStoreKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZdiffStoreKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZdiffStoreDestinationKey3", command: []string{"ZDIFFSTORE", "ZdiffStoreDestinationKey3", "ZdiffStoreKey6", "ZdiffStoreKey7", "ZdiffStoreKey8"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), expectedResponse: 8, expectedError: nil, @@ -893,15 +898,15 @@ func Test_HandleZDIFFSTORE(t *testing.T) { preset: true, presetValues: map[string]interface{}{ "ZdiffStoreKey9": "Default value", - "ZdiffStoreKey10": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZdiffStoreKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZdiffStoreKey11": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZdiffStoreKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZdiffStoreDestinationKey4", @@ -914,15 +919,15 @@ func Test_HandleZDIFFSTORE(t *testing.T) { preset: true, destination: "ZdiffStoreDestinationKey5", presetValues: map[string]interface{}{ - "ZdiffStoreKey12": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZdiffStoreKey12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZdiffStoreKey13": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZdiffStoreKey13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZDIFFSTORE", "ZdiffStoreDestinationKey5", "non-existent", "ZdiffStoreKey12", "ZdiffStoreKey13"}, @@ -974,13 +979,13 @@ func Test_HandleZDIFFSTORE(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.destination); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, test.destination).(*SortedSet) + set, ok := mockServer.GetValue(ctx, test.destination).(*sorted_set.SortedSet) if !ok { t.Errorf("expected vaule at key %s to be set, got another type", test.destination) } for _, elem := range set.GetAll() { - if !test.expectedValue.Contains(elem.value) { - t.Errorf("could not find element %s in the expected values", elem.value) + if !test.expectedValue.Contains(elem.Value) { + t.Errorf("could not find element %s in the expected values", elem.Value) } } mockServer.KeyRUnlock(ctx, test.destination) @@ -994,40 +999,40 @@ func Test_HandleZINCRBY(t *testing.T) { presetValue interface{} key string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse string expectedError error }{ { // 1. Successfully increment by int. Return the new score preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), key: "ZincrbyKey1", command: []string{"ZINCRBY", "ZincrbyKey1", "5", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 6}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 6}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), expectedResponse: "6", expectedError: nil, }, { // 2. Successfully increment by float. Return new score preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), key: "ZincrbyKey2", command: []string{"ZINCRBY", "ZincrbyKey2", "346.785", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 347.785}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 347.785}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), expectedResponse: "347.785", expectedError: nil, @@ -1037,59 +1042,59 @@ func Test_HandleZINCRBY(t *testing.T) { presetValue: nil, key: "ZincrbyKey3", command: []string{"ZINCRBY", "ZincrbyKey3", "346.785", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 346.785}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 346.785}, }), expectedResponse: "346.785", expectedError: nil, }, { // 4. Increment score to +inf preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), key: "ZincrbyKey4", command: []string{"ZINCRBY", "ZincrbyKey4", "+inf", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: Score(math.Inf(1))}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(1))}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), expectedResponse: "+Inf", expectedError: nil, }, { // 5. Increment score to -inf preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), key: "ZincrbyKey5", command: []string{"ZINCRBY", "ZincrbyKey5", "-inf", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: Score(math.Inf(-1))}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(-1))}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), expectedResponse: "-Inf", expectedError: nil, }, { // 6. Incrementing score by negative increment should lower the score preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), key: "ZincrbyKey6", command: []string{"ZINCRBY", "ZincrbyKey6", "-2.5", "five"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 2.5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 2.5}, }), expectedResponse: "2.5", expectedError: nil, @@ -1105,39 +1110,39 @@ func Test_HandleZINCRBY(t *testing.T) { }, { // 8. Return error when trying to increment a member that already has score -inf preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: Score(math.Inf(-1))}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(-1))}, }), key: "ZincrbyKey8", command: []string{"ZINCRBY", "ZincrbyKey8", "2.5", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: Score(math.Inf(-1))}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(-1))}, }), expectedResponse: "", expectedError: errors.New("cannot increment -inf or +inf"), }, { // 9. Return error when trying to increment a member that already has score +inf preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: Score(math.Inf(1))}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(1))}, }), key: "ZincrbyKey9", command: []string{"ZINCRBY", "ZincrbyKey9", "2.5", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: Score(math.Inf(-1))}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: sorted_set.Score(math.Inf(-1))}, }), expectedResponse: "", expectedError: errors.New("cannot increment -inf or +inf"), }, { // 10. Return error when increment is not a valid number preset: true, - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, }), key: "ZincrbyKey10", command: []string{"ZINCRBY", "ZincrbyKey10", "increment", "one"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, }), expectedResponse: "", expectedError: errors.New("increment must be a double"), @@ -1191,19 +1196,19 @@ func Test_HandleZINCRBY(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, test.key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, test.key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected vaule at key %s to be set, got another type", test.key) } for _, elem := range set.GetAll() { - if !test.expectedValue.Contains(elem.value) { - t.Errorf("could not find element %s in the expected values", elem.value) + if !test.expectedValue.Contains(elem.Value) { + t.Errorf("could not find element %s in the expected values", elem.Value) } - if test.expectedValue.Get(elem.value).score != elem.score { + if test.expectedValue.Get(elem.Value).Score != elem.Score { t.Errorf("expected score of element \"%s\" from set at key \"%s\" to be %s, got %s", - elem.value, test.key, - strconv.FormatFloat(float64(test.expectedValue.Get(elem.value).score), 'f', -1, 64), - strconv.FormatFloat(float64(elem.score), 'f', -1, 64), + elem.Value, test.key, + strconv.FormatFloat(float64(test.expectedValue.Get(elem.Value).Score), 'f', -1, 64), + strconv.FormatFloat(float64(elem.Score), 'f', -1, 64), ) } } @@ -1217,25 +1222,25 @@ func Test_HandleZMPOP(t *testing.T) { preset bool presetValues map[string]interface{} command []string - expectedValues map[string]*SortedSet + expectedValues map[string]*sorted_set.SortedSet expectedResponse [][]string expectedError error }{ { // 1. Successfully pop one min element by default preset: true, presetValues: map[string]interface{}{ - "ZmpopKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZmpopKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, command: []string{"ZMPOP", "ZmpopKey1"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey1": NewSortedSet([]MemberParam{ - {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, expectedResponse: [][]string{ @@ -1246,18 +1251,18 @@ func Test_HandleZMPOP(t *testing.T) { { // 2. Successfully pop one min element by specifying MIN preset: true, presetValues: map[string]interface{}{ - "ZmpopKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZmpopKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, command: []string{"ZMPOP", "ZmpopKey2", "MIN"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey2": NewSortedSet([]MemberParam{ - {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, expectedResponse: [][]string{ @@ -1268,17 +1273,17 @@ func Test_HandleZMPOP(t *testing.T) { { // 3. Successfully pop one max element by specifying MAX modifier preset: true, presetValues: map[string]interface{}{ - "ZmpopKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZmpopKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, command: []string{"ZMPOP", "ZmpopKey3", "MAX"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, }), }, expectedResponse: [][]string{ @@ -1289,16 +1294,16 @@ func Test_HandleZMPOP(t *testing.T) { { // 4. Successfully pop multiple min elements preset: true, presetValues: map[string]interface{}{ - "ZmpopKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + "ZmpopKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), }, command: []string{"ZMPOP", "ZmpopKey4", "MIN", "COUNT", "5"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey4": NewSortedSet([]MemberParam{ - {value: "six", score: 6}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "six", Score: 6}, }), }, expectedResponse: [][]string{ @@ -1310,16 +1315,16 @@ func Test_HandleZMPOP(t *testing.T) { { // 5. Successfully pop multiple max elements preset: true, presetValues: map[string]interface{}{ - "ZmpopKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + "ZmpopKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), }, command: []string{"ZMPOP", "ZmpopKey5", "MAX", "COUNT", "5"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, }), }, expectedResponse: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}}, @@ -1328,18 +1333,18 @@ func Test_HandleZMPOP(t *testing.T) { { // 6. Successfully pop elements from the first set which is non-empty preset: true, presetValues: map[string]interface{}{ - "ZmpopKey6": NewSortedSet([]MemberParam{}), - "ZmpopKey7": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + "ZmpopKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{}), + "ZmpopKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), }, command: []string{"ZMPOP", "ZmpopKey6", "ZmpopKey7", "MAX", "COUNT", "5"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey6": NewSortedSet([]MemberParam{}), - "ZmpopKey7": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{}), + "ZmpopKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, }), }, expectedResponse: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}}, @@ -1350,18 +1355,18 @@ func Test_HandleZMPOP(t *testing.T) { presetValues: map[string]interface{}{ "ZmpopKey8": "Default value", "ZmpopKey9": 56, - "ZmpopKey10": NewSortedSet([]MemberParam{}), - "ZmpopKey11": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + "ZmpopKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{}), + "ZmpopKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), }, command: []string{"ZMPOP", "ZmpopKey8", "ZmpopKey9", "ZmpopKey10", "ZmpopKey11", "MIN", "COUNT", "5"}, - expectedValues: map[string]*SortedSet{ - "ZmpopKey10": NewSortedSet([]MemberParam{}), - "ZmpopKey11": NewSortedSet([]MemberParam{ - {value: "six", score: 6}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{}), + "ZmpopKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "six", Score: 6}, }), }, expectedResponse: [][]string{{"one", "1"}, {"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}}, @@ -1428,7 +1433,7 @@ func Test_HandleZMPOP(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected key \"%s\" to be a sorted set, got another type", key) } @@ -1444,25 +1449,25 @@ func Test_HandleZPOP(t *testing.T) { preset bool presetValues map[string]interface{} command []string - expectedValues map[string]*SortedSet + expectedValues map[string]*sorted_set.SortedSet expectedResponse [][]string expectedError error }{ { // 1. Successfully pop one min element by default preset: true, presetValues: map[string]interface{}{ - "ZmpopMinKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZmpopMinKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, command: []string{"ZPOPMIN", "ZmpopMinKey1"}, - expectedValues: map[string]*SortedSet{ - "ZmpopMinKey1": NewSortedSet([]MemberParam{ - {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopMinKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, expectedResponse: [][]string{ @@ -1473,17 +1478,17 @@ func Test_HandleZPOP(t *testing.T) { { // 2. Successfully pop one max element by default preset: true, presetValues: map[string]interface{}{ - "ZmpopMaxKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZmpopMaxKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, command: []string{"ZPOPMAX", "ZmpopMaxKey2"}, - expectedValues: map[string]*SortedSet{ - "ZmpopMaxKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopMaxKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, }), }, expectedResponse: [][]string{ @@ -1494,16 +1499,16 @@ func Test_HandleZPOP(t *testing.T) { { // 3. Successfully pop multiple min elements preset: true, presetValues: map[string]interface{}{ - "ZmpopMinKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + "ZmpopMinKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), }, command: []string{"ZPOPMIN", "ZmpopMinKey3", "5"}, - expectedValues: map[string]*SortedSet{ - "ZmpopMinKey3": NewSortedSet([]MemberParam{ - {value: "six", score: 6}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopMinKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "six", Score: 6}, }), }, expectedResponse: [][]string{ @@ -1515,16 +1520,16 @@ func Test_HandleZPOP(t *testing.T) { { // 4. Successfully pop multiple max elements preset: true, presetValues: map[string]interface{}{ - "ZmpopMaxKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, + "ZmpopMaxKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, }), }, command: []string{"ZPOPMAX", "ZmpopMaxKey4", "5"}, - expectedValues: map[string]*SortedSet{ - "ZmpopMaxKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZmpopMaxKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, }), }, expectedResponse: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}}, @@ -1601,7 +1606,7 @@ func Test_HandleZPOP(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected key \"%s\" to be a sorted set, got another type", key) } @@ -1624,10 +1629,10 @@ func Test_HandleZMSCORE(t *testing.T) { // Return nil for elements that do not exist in the sorted set. preset: true, presetValues: map[string]interface{}{ - "ZmScoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1.1}, {value: "two", score: 245}, - {value: "three", score: 3}, {value: "four", score: 4.055}, - {value: "five", score: 5}, + "ZmScoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, }), }, command: []string{"ZMSCORE", "ZmScoreKey1", "one", "none", "two", "one", "three", "four", "none", "five"}, @@ -1708,10 +1713,10 @@ func Test_HandleZSCORE(t *testing.T) { { // 1. Return score from a sorted set. preset: true, presetValues: map[string]interface{}{ - "ZscoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1.1}, {value: "two", score: 245}, - {value: "three", score: 3}, {value: "four", score: 4.055}, - {value: "five", score: 5}, + "ZscoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, }), }, command: []string{"ZSCORE", "ZscoreKey1", "four"}, @@ -1728,10 +1733,10 @@ func Test_HandleZSCORE(t *testing.T) { { // 3. If key exists and is a sorted set, but the member does not exist, return nil preset: true, presetValues: map[string]interface{}{ - "ZscoreKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1.1}, {value: "two", score: 245}, - {value: "three", score: 3}, {value: "four", score: 4.055}, - {value: "five", score: 5}, + "ZscoreKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, }), }, command: []string{"ZSCORE", "ZscoreKey3", "non-existent"}, @@ -1812,9 +1817,9 @@ func Test_HandleZRANDMEMBER(t *testing.T) { // Count is positive, do not allow repeated elements preset: true, key: "ZrandMemberKey1", - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 8}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), command: []string{"ZRANDMEMBER", "ZrandMemberKey1", "3"}, expectedValue: 8, @@ -1830,9 +1835,9 @@ func Test_HandleZRANDMEMBER(t *testing.T) { // Count is negative, so allow repeated numbers. preset: true, key: "ZrandMemberKey2", - presetValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 8}, + presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), command: []string{"ZRANDMEMBER", "ZrandMemberKey2", "-5", "WITHSCORES"}, expectedValue: 8, @@ -1921,7 +1926,7 @@ func Test_HandleZRANDMEMBER(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, test.key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, test.key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected value at key \"%s\" to be a set, got another type", test.key) } @@ -1930,27 +1935,27 @@ func Test_HandleZRANDMEMBER(t *testing.T) { } // 3. Check if all the returned elements we received are still in the set. for _, element := range rv.Array() { - if !set.Contains(Value(element.Array()[0].String())) { + if !set.Contains(sorted_set.Value(element.Array()[0].String())) { t.Errorf("expected element \"%s\" to be in set but it was not found", element.String()) } } // 4. If allowRepeat is false, check that all the elements make a valid set if !test.allowRepeat { - var elems []MemberParam + var elems []sorted_set.MemberParam for _, e := range rv.Array() { if len(e.Array()) == 1 { - elems = append(elems, MemberParam{ - value: Value(e.Array()[0].String()), - score: 1, + elems = append(elems, sorted_set.MemberParam{ + Value: sorted_set.Value(e.Array()[0].String()), + Score: 1, }) continue } - elems = append(elems, MemberParam{ - value: Value(e.Array()[0].String()), - score: Score(e.Array()[1].Float()), + elems = append(elems, sorted_set.MemberParam{ + Value: sorted_set.Value(e.Array()[0].String()), + Score: sorted_set.Score(e.Array()[1].Float()), }) } - s := NewSortedSet(elems) + s := sorted_set.NewSortedSet(elems) if s.Cardinality() != len(elems) { t.Errorf("expected non-repeating elements for random elements at key \"%s\"", test.key) } @@ -1969,10 +1974,10 @@ func Test_HandleZRANK(t *testing.T) { { // 1. Return element's rank from a sorted set. preset: true, presetValues: map[string]interface{}{ - "ZrankKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZrankKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), }, command: []string{"ZRANK", "ZrankKey1", "four"}, @@ -1982,10 +1987,10 @@ func Test_HandleZRANK(t *testing.T) { { // 2. Return element's rank from a sorted set with its score. preset: true, presetValues: map[string]interface{}{ - "ZrankKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 100.1}, {value: "two", score: 245}, - {value: "three", score: 305.43}, {value: "four", score: 411.055}, - {value: "five", score: 500}, + "ZrankKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 305.43}, {Value: "four", Score: 411.055}, + {Value: "five", Score: 500}, }), }, command: []string{"ZRANK", "ZrankKey1", "four", "WITHSCORES"}, @@ -2002,10 +2007,10 @@ func Test_HandleZRANK(t *testing.T) { { // 4. If key exists and is a sorted set, but the member does not exist, return nil preset: true, presetValues: map[string]interface{}{ - "ZrankKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1.1}, {value: "two", score: 245}, - {value: "three", score: 3}, {value: "four", score: 4.055}, - {value: "five", score: 5}, + "ZrankKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1.1}, {Value: "two", Score: 245}, + {Value: "three", Score: 3}, {Value: "four", Score: 4.055}, + {Value: "five", Score: 5}, }), }, command: []string{"ZRANK", "ZrankKey4", "non-existent"}, @@ -2081,7 +2086,7 @@ func Test_HandleZREM(t *testing.T) { preset bool presetValues map[string]interface{} command []string - expectedValues map[string]*SortedSet + expectedValues map[string]*sorted_set.SortedSet expectedResponse int expectedError error }{ @@ -2089,19 +2094,19 @@ func Test_HandleZREM(t *testing.T) { // Return deleted count. preset: true, presetValues: map[string]interface{}{ - "ZremKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + "ZremKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, command: []string{"ZREM", "ZremKey1", "three", "four", "five", "none", "six", "none", "seven"}, - expectedValues: map[string]*SortedSet{ - "ZremKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZremKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, expectedResponse: 5, @@ -2168,7 +2173,7 @@ func Test_HandleZREM(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected value at key \"%s\" to be a sorted set, got another type", key) } @@ -2185,26 +2190,26 @@ func Test_HandleZREMRANGEBYSCORE(t *testing.T) { preset bool presetValues map[string]interface{} command []string - expectedValues map[string]*SortedSet + expectedValues map[string]*sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Successfully remove multiple elements with scores inside the provided range preset: true, presetValues: map[string]interface{}{ - "ZremRangeByScoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + "ZremRangeByScoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, command: []string{"ZREMRANGEBYSCORE", "ZremRangeByScoreKey1", "3", "7"}, - expectedValues: map[string]*SortedSet{ - "ZremRangeByScoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZremRangeByScoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, expectedResponse: 5, @@ -2276,7 +2281,7 @@ func Test_HandleZREMRANGEBYSCORE(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected value at key \"%s\" to be a sorted set, got another type", key) } @@ -2293,26 +2298,26 @@ func Test_HandleZREMRANGEBYRANK(t *testing.T) { preset bool presetValues map[string]interface{} command []string - expectedValues map[string]*SortedSet + expectedValues map[string]*sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Successfully remove multiple elements within range preset: true, presetValues: map[string]interface{}{ - "ZremRangeByRankKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + "ZremRangeByRankKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, command: []string{"ZREMRANGEBYRANK", "ZremRangeByRankKey1", "0", "5"}, - expectedValues: map[string]*SortedSet{ - "ZremRangeByRankKey1": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZremRangeByRankKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, expectedResponse: 6, @@ -2321,20 +2326,20 @@ func Test_HandleZREMRANGEBYRANK(t *testing.T) { { // 2. Establish boundaries from the end of the set when negative boundaries are provided preset: true, presetValues: map[string]interface{}{ - "ZremRangeByRankKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + "ZremRangeByRankKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, command: []string{"ZREMRANGEBYRANK", "ZremRangeByRankKey2", "-6", "-3"}, - expectedValues: map[string]*SortedSet{ - "ZremRangeByRankKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZremRangeByRankKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, expectedResponse: 4, @@ -2364,12 +2369,12 @@ func Test_HandleZREMRANGEBYRANK(t *testing.T) { { // 5. Return error when start index is out of bounds preset: true, presetValues: map[string]interface{}{ - "ZremRangeByRankKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + "ZremRangeByRankKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, command: []string{"ZREMRANGEBYRANK", "ZremRangeByRankKey5", "-12", "5"}, @@ -2380,12 +2385,12 @@ func Test_HandleZREMRANGEBYRANK(t *testing.T) { { // 6. Return error when end index is out of bounds preset: true, presetValues: map[string]interface{}{ - "ZremRangeByRankKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, + "ZremRangeByRankKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, }), }, command: []string{"ZREMRANGEBYRANK", "ZremRangeByRankKey6", "0", "11"}, @@ -2438,7 +2443,7 @@ func Test_HandleZREMRANGEBYRANK(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected value at key \"%s\" to be a sorted set, got another type", key) } @@ -2455,27 +2460,27 @@ func Test_HandleZREMRANGEBYLEX(t *testing.T) { preset bool presetValues map[string]interface{} command []string - expectedValues map[string]*SortedSet + expectedValues map[string]*sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Successfully remove multiple elements with scores inside the provided range preset: true, presetValues: map[string]interface{}{ - "ZremRangeByLexKey1": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 1}, - {value: "c", score: 1}, {value: "d", score: 1}, - {value: "e", score: 1}, {value: "f", score: 1}, - {value: "g", score: 1}, {value: "h", score: 1}, - {value: "i", score: 1}, {value: "j", score: 1}, + "ZremRangeByLexKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, + {Value: "i", Score: 1}, {Value: "j", Score: 1}, }), }, command: []string{"ZREMRANGEBYLEX", "ZremRangeByLexKey1", "a", "d"}, - expectedValues: map[string]*SortedSet{ - "ZremRangeByLexKey1": NewSortedSet([]MemberParam{ - {value: "e", score: 1}, {value: "f", score: 1}, - {value: "g", score: 1}, {value: "h", score: 1}, - {value: "i", score: 1}, {value: "j", score: 1}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZremRangeByLexKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, + {Value: "i", Score: 1}, {Value: "j", Score: 1}, }), }, expectedResponse: 4, @@ -2484,22 +2489,22 @@ func Test_HandleZREMRANGEBYLEX(t *testing.T) { { // 2. Return 0 if the members do not have the same score preset: true, presetValues: map[string]interface{}{ - "ZremRangeByLexKey2": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 2}, - {value: "c", score: 3}, {value: "d", score: 4}, - {value: "e", score: 5}, {value: "f", score: 6}, - {value: "g", score: 7}, {value: "h", score: 8}, - {value: "i", score: 9}, {value: "j", score: 10}, + "ZremRangeByLexKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 2}, + {Value: "c", Score: 3}, {Value: "d", Score: 4}, + {Value: "e", Score: 5}, {Value: "f", Score: 6}, + {Value: "g", Score: 7}, {Value: "h", Score: 8}, + {Value: "i", Score: 9}, {Value: "j", Score: 10}, }), }, command: []string{"ZREMRANGEBYLEX", "ZremRangeByLexKey2", "d", "g"}, - expectedValues: map[string]*SortedSet{ - "ZremRangeByLexKey2": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 2}, - {value: "c", score: 3}, {value: "d", score: 4}, - {value: "e", score: 5}, {value: "f", score: 6}, - {value: "g", score: 7}, {value: "h", score: 8}, - {value: "i", score: 9}, {value: "j", score: 10}, + expectedValues: map[string]*sorted_set.SortedSet{ + "ZremRangeByLexKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 2}, + {Value: "c", Score: 3}, {Value: "d", Score: 4}, + {Value: "e", Score: 5}, {Value: "f", Score: 6}, + {Value: "g", Score: 7}, {Value: "h", Score: 8}, + {Value: "i", Score: 9}, {Value: "j", Score: 10}, }), }, expectedResponse: 0, @@ -2571,7 +2576,7 @@ func Test_HandleZREMRANGEBYLEX(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, key); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, key).(*SortedSet) + set, ok := mockServer.GetValue(ctx, key).(*sorted_set.SortedSet) if !ok { t.Errorf("expected value at key \"%s\" to be a sorted set, got another type", key) } @@ -2594,11 +2599,11 @@ func Test_HandleZRANGE(t *testing.T) { { // 1. Get elements withing score range without score. preset: true, presetValues: map[string]interface{}{ - "ZrangeKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZRANGE", "ZrangeKey1", "3", "7", "BYSCORE"}, @@ -2608,11 +2613,11 @@ func Test_HandleZRANGE(t *testing.T) { { // 2. Get elements within score range with score. preset: true, presetValues: map[string]interface{}{ - "ZrangeKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZRANGE", "ZrangeKey2", "3", "7", "BYSCORE", "WITHSCORES"}, @@ -2625,11 +2630,11 @@ func Test_HandleZRANGE(t *testing.T) { // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). preset: true, presetValues: map[string]interface{}{ - "ZrangeKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZRANGE", "ZrangeKey3", "3", "7", "BYSCORE", "WITHSCORES", "LIMIT", "2", "4"}, @@ -2641,11 +2646,11 @@ func Test_HandleZRANGE(t *testing.T) { // REV reverses the original set before getting the range. preset: true, presetValues: map[string]interface{}{ - "ZrangeKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZRANGE", "ZrangeKey4", "3", "7", "BYSCORE", "WITHSCORES", "LIMIT", "2", "4", "REV"}, @@ -2655,11 +2660,11 @@ func Test_HandleZRANGE(t *testing.T) { { // 5. Get elements within lex range without score. preset: true, presetValues: map[string]interface{}{ - "ZrangeKey5": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "e", score: 1}, - {value: "b", score: 1}, {value: "f", score: 1}, - {value: "c", score: 1}, {value: "g", score: 1}, - {value: "d", score: 1}, {value: "h", score: 1}, + "ZrangeKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, }), }, command: []string{"ZRANGE", "ZrangeKey5", "c", "g", "BYLEX"}, @@ -2669,11 +2674,11 @@ func Test_HandleZRANGE(t *testing.T) { { // 6. Get elements within lex range with score. preset: true, presetValues: map[string]interface{}{ - "ZrangeKey6": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "e", score: 1}, - {value: "b", score: 1}, {value: "f", score: 1}, - {value: "c", score: 1}, {value: "g", score: 1}, - {value: "d", score: 1}, {value: "h", score: 1}, + "ZrangeKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, }), }, command: []string{"ZRANGE", "ZrangeKey6", "a", "f", "BYLEX", "WITHSCORES"}, @@ -2686,11 +2691,11 @@ func Test_HandleZRANGE(t *testing.T) { // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). preset: true, presetValues: map[string]interface{}{ - "ZrangeKey7": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 1}, - {value: "c", score: 1}, {value: "d", score: 1}, - {value: "e", score: 1}, {value: "f", score: 1}, - {value: "g", score: 1}, {value: "h", score: 1}, + "ZrangeKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, }), }, command: []string{"ZRANGE", "ZrangeKey7", "a", "h", "BYLEX", "WITHSCORES", "LIMIT", "2", "4"}, @@ -2702,11 +2707,11 @@ func Test_HandleZRANGE(t *testing.T) { // REV reverses the original set before getting the range. preset: true, presetValues: map[string]interface{}{ - "ZrangeKey8": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 1}, - {value: "c", score: 1}, {value: "d", score: 1}, - {value: "e", score: 1}, {value: "f", score: 1}, - {value: "g", score: 1}, {value: "h", score: 1}, + "ZrangeKey8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, }), }, command: []string{"ZRANGE", "ZrangeKey8", "a", "h", "BYLEX", "WITHSCORES", "LIMIT", "2", "4", "REV"}, @@ -2716,11 +2721,11 @@ func Test_HandleZRANGE(t *testing.T) { { // 9. Return an empty slice when we use BYLEX while elements have different scores preset: true, presetValues: map[string]interface{}{ - "ZrangeKey9": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 5}, - {value: "c", score: 2}, {value: "d", score: 6}, - {value: "e", score: 3}, {value: "f", score: 7}, - {value: "g", score: 4}, {value: "h", score: 8}, + "ZrangeKey9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 5}, + {Value: "c", Score: 2}, {Value: "d", Score: 6}, + {Value: "e", Score: 3}, {Value: "f", Score: 7}, + {Value: "g", Score: 4}, {Value: "h", Score: 8}, }), }, command: []string{"ZRANGE", "ZrangeKey9", "a", "h", "BYLEX", "WITHSCORES", "LIMIT", "2", "4"}, @@ -2837,45 +2842,45 @@ func Test_HandleZRANGESTORE(t *testing.T) { presetValues map[string]interface{} destination string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get elements withing score range without score. preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeStoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZrangeStoreDestinationKey1", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey1", "ZrangeStoreKey1", "3", "7", "BYSCORE"}, expectedResponse: 5, - expectedValue: NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, {value: "five", score: 5}, - {value: "six", score: 6}, {value: "seven", score: 7}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, {Value: "five", Score: 5}, + {Value: "six", Score: 6}, {Value: "seven", Score: 7}, }), expectedError: nil, }, { // 2. Get elements within score range with score. preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey2": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeStoreKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZrangeStoreDestinationKey2", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey2", "ZrangeStoreKey2", "3", "7", "BYSCORE", "WITHSCORES"}, expectedResponse: 5, - expectedValue: NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, {value: "five", score: 5}, - {value: "six", score: 6}, {value: "seven", score: 7}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, {Value: "five", Score: 5}, + {Value: "six", Score: 6}, {Value: "seven", Score: 7}, }), expectedError: nil, }, @@ -2883,18 +2888,18 @@ func Test_HandleZRANGESTORE(t *testing.T) { // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeStoreKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZrangeStoreDestinationKey3", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey3", "ZrangeStoreKey3", "3", "7", "BYSCORE", "WITHSCORES", "LIMIT", "2", "4"}, expectedResponse: 3, - expectedValue: NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, {value: "five", score: 5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, {Value: "five", Score: 5}, }), expectedError: nil, }, @@ -2903,56 +2908,56 @@ func Test_HandleZRANGESTORE(t *testing.T) { // REV reverses the original set before getting the range. preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZrangeStoreKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZrangeStoreDestinationKey4", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey4", "ZrangeStoreKey4", "3", "7", "BYSCORE", "WITHSCORES", "LIMIT", "2", "4", "REV"}, expectedResponse: 3, - expectedValue: NewSortedSet([]MemberParam{ - {value: "six", score: 6}, {value: "five", score: 5}, {value: "four", score: 4}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "six", Score: 6}, {Value: "five", Score: 5}, {Value: "four", Score: 4}, }), expectedError: nil, }, { // 5. Get elements within lex range without score. preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey5": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "e", score: 1}, - {value: "b", score: 1}, {value: "f", score: 1}, - {value: "c", score: 1}, {value: "g", score: 1}, - {value: "d", score: 1}, {value: "h", score: 1}, + "ZrangeStoreKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, }), }, destination: "ZrangeStoreDestinationKey5", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey5", "ZrangeStoreKey5", "c", "g", "BYLEX"}, expectedResponse: 5, - expectedValue: NewSortedSet([]MemberParam{ - {value: "c", score: 1}, {value: "d", score: 1}, {value: "e", score: 1}, - {value: "f", score: 1}, {value: "g", score: 1}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "c", Score: 1}, {Value: "d", Score: 1}, {Value: "e", Score: 1}, + {Value: "f", Score: 1}, {Value: "g", Score: 1}, }), expectedError: nil, }, { // 6. Get elements within lex range with score. preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey6": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "e", score: 1}, - {value: "b", score: 1}, {value: "f", score: 1}, - {value: "c", score: 1}, {value: "g", score: 1}, - {value: "d", score: 1}, {value: "h", score: 1}, + "ZrangeStoreKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "e", Score: 1}, + {Value: "b", Score: 1}, {Value: "f", Score: 1}, + {Value: "c", Score: 1}, {Value: "g", Score: 1}, + {Value: "d", Score: 1}, {Value: "h", Score: 1}, }), }, destination: "ZrangeStoreDestinationKey6", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey6", "ZrangeStoreKey6", "a", "f", "BYLEX", "WITHSCORES"}, expectedResponse: 6, - expectedValue: NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 1}, {value: "c", score: 1}, - {value: "d", score: 1}, {value: "e", score: 1}, {value: "f", score: 1}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, {Value: "c", Score: 1}, + {Value: "d", Score: 1}, {Value: "e", Score: 1}, {Value: "f", Score: 1}, }), expectedError: nil, }, @@ -2960,18 +2965,18 @@ func Test_HandleZRANGESTORE(t *testing.T) { // Offset and limit are in where we start and stop counting in the original sorted set (NOT THE RESULT). preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey7": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 1}, - {value: "c", score: 1}, {value: "d", score: 1}, - {value: "e", score: 1}, {value: "f", score: 1}, - {value: "g", score: 1}, {value: "h", score: 1}, + "ZrangeStoreKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, }), }, destination: "ZrangeStoreDestinationKey7", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey7", "ZrangeStoreKey7", "a", "h", "BYLEX", "WITHSCORES", "LIMIT", "2", "4"}, expectedResponse: 3, - expectedValue: NewSortedSet([]MemberParam{ - {value: "c", score: 1}, {value: "d", score: 1}, {value: "e", score: 1}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "c", Score: 1}, {Value: "d", Score: 1}, {Value: "e", Score: 1}, }), expectedError: nil, }, @@ -2980,29 +2985,29 @@ func Test_HandleZRANGESTORE(t *testing.T) { // REV reverses the original set before getting the range. preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey8": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 1}, - {value: "c", score: 1}, {value: "d", score: 1}, - {value: "e", score: 1}, {value: "f", score: 1}, - {value: "g", score: 1}, {value: "h", score: 1}, + "ZrangeStoreKey8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 1}, + {Value: "c", Score: 1}, {Value: "d", Score: 1}, + {Value: "e", Score: 1}, {Value: "f", Score: 1}, + {Value: "g", Score: 1}, {Value: "h", Score: 1}, }), }, destination: "ZrangeStoreDestinationKey8", command: []string{"ZRANGESTORE", "ZrangeStoreDestinationKey8", "ZrangeStoreKey8", "a", "h", "BYLEX", "WITHSCORES", "LIMIT", "2", "4", "REV"}, expectedResponse: 3, - expectedValue: NewSortedSet([]MemberParam{ - {value: "f", score: 1}, {value: "e", score: 1}, {value: "d", score: 1}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "f", Score: 1}, {Value: "e", Score: 1}, {Value: "d", Score: 1}, }), expectedError: nil, }, { // 9. Return an empty slice when we use BYLEX while elements have different scores preset: true, presetValues: map[string]interface{}{ - "ZrangeStoreKey9": NewSortedSet([]MemberParam{ - {value: "a", score: 1}, {value: "b", score: 5}, - {value: "c", score: 2}, {value: "d", score: 6}, - {value: "e", score: 3}, {value: "f", score: 7}, - {value: "g", score: 4}, {value: "h", score: 8}, + "ZrangeStoreKey9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "a", Score: 1}, {Value: "b", Score: 5}, + {Value: "c", Score: 2}, {Value: "d", Score: 6}, + {Value: "e", Score: 3}, {Value: "f", Score: 7}, + {Value: "g", Score: 4}, {Value: "h", Score: 8}, }), }, destination: "ZrangeStoreDestinationKey9", @@ -3100,7 +3105,7 @@ func Test_HandleZRANGESTORE(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.destination); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, test.destination).(*SortedSet) + set, ok := mockServer.GetValue(ctx, test.destination).(*sorted_set.SortedSet) if !ok { t.Errorf("expected vaule at key %s to be set, got another type", test.destination) } @@ -3123,15 +3128,15 @@ func Test_HandleZINTER(t *testing.T) { { // 1. Get the intersection between 2 sorted sets. preset: true, presetValues: map[string]interface{}{ - "ZinterKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZinterKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), - "ZinterKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZINTER", "ZinterKey1", "ZinterKey2"}, @@ -3143,21 +3148,21 @@ func Test_HandleZINTER(t *testing.T) { // By default, the SUM aggregate will be used. preset: true, presetValues: map[string]interface{}{ - "ZinterKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 8}, + "ZinterKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, }), - "ZinterKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "ZinterKey3", "ZinterKey4", "ZinterKey5", "WITHSCORES"}, @@ -3169,21 +3174,21 @@ func Test_HandleZINTER(t *testing.T) { // Use MIN aggregate. preset: true, presetValues: map[string]interface{}{ - "ZinterKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey7": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterKey8": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "ZinterKey6", "ZinterKey7", "ZinterKey8", "WITHSCORES", "AGGREGATE", "MIN"}, @@ -3195,21 +3200,21 @@ func Test_HandleZINTER(t *testing.T) { // Use MAX aggregate. preset: true, presetValues: map[string]interface{}{ - "ZinterKey9": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey10": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterKey11": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "ZinterKey9", "ZinterKey10", "ZinterKey11", "WITHSCORES", "AGGREGATE", "MAX"}, @@ -3221,21 +3226,21 @@ func Test_HandleZINTER(t *testing.T) { // Use SUM aggregate with weights modifier. preset: true, presetValues: map[string]interface{}{ - "ZinterKey12": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey13": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterKey13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterKey14": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "ZinterKey12", "ZinterKey13", "ZinterKey14", "WITHSCORES", "AGGREGATE", "SUM", "WEIGHTS", "1", "5", "3"}, @@ -3247,21 +3252,21 @@ func Test_HandleZINTER(t *testing.T) { // Use MAX aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZinterKey15": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey16": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterKey16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterKey17": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "ZinterKey15", "ZinterKey16", "ZinterKey17", "WITHSCORES", "AGGREGATE", "MAX", "WEIGHTS", "1", "5", "3"}, @@ -3273,21 +3278,21 @@ func Test_HandleZINTER(t *testing.T) { // Use MIN aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZinterKey18": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey19": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterKey19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterKey20": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "ZinterKey18", "ZinterKey19", "ZinterKey20", "WITHSCORES", "AGGREGATE", "MIN", "WEIGHTS", "1", "5", "3"}, @@ -3297,13 +3302,13 @@ func Test_HandleZINTER(t *testing.T) { { // 8. Throw an error if there are more weights than keys preset: true, presetValues: map[string]interface{}{ - "ZinterKey21": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey22": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterKey22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTER", "ZinterKey21", "ZinterKey22", "WEIGHTS", "1", "2", "3"}, expectedResponse: nil, @@ -3312,16 +3317,16 @@ func Test_HandleZINTER(t *testing.T) { { // 9. Throw an error if there are fewer weights than keys preset: true, presetValues: map[string]interface{}{ - "ZinterKey23": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterKey24": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, + "ZinterKey24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, }), - "ZinterKey25": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterKey25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTER", "ZinterKey23", "ZinterKey24", "ZinterKey25", "WEIGHTS", "5", "4"}, expectedResponse: nil, @@ -3330,9 +3335,9 @@ func Test_HandleZINTER(t *testing.T) { { // 10. Throw an error if there are no keys provided preset: true, presetValues: map[string]interface{}{ - "ZinterKey26": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZinterKey27": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZinterKey28": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterKey26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZinterKey27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZinterKey28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTER", "WEIGHTS", "5", "4"}, expectedResponse: nil, @@ -3341,14 +3346,14 @@ func Test_HandleZINTER(t *testing.T) { { // 11. Throw an error if any of the provided keys are not sorted sets preset: true, presetValues: map[string]interface{}{ - "ZinterKey29": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterKey29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), "ZinterKey30": "Default value", - "ZinterKey31": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterKey31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTER", "ZinterKey29", "ZinterKey30", "ZinterKey31"}, expectedResponse: nil, @@ -3357,15 +3362,15 @@ func Test_HandleZINTER(t *testing.T) { { // 12. If any of the keys does not exist, return an empty array. preset: true, presetValues: map[string]interface{}{ - "ZinterKey32": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZinterKey32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZinterKey33": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterKey33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTER", "non-existent", "ZinterKey32", "ZinterKey33"}, @@ -3434,29 +3439,29 @@ func Test_HandleZINTERSTORE(t *testing.T) { presetValues map[string]interface{} destination string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get the intersection between 2 sorted sets. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZinterStoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), - "ZinterStoreKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZinterStoreDestinationKey1", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey1", "ZinterStoreKey1", "ZinterStoreKey2"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), expectedResponse: 3, expectedError: nil, @@ -3466,27 +3471,27 @@ func Test_HandleZINTERSTORE(t *testing.T) { // By default, the SUM aggregate will be used. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 8}, + "ZinterStoreKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZinterStoreDestinationKey2", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey2", "ZinterStoreKey3", "ZinterStoreKey4", "ZinterStoreKey5", "WITHSCORES"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 24}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 24}, }), expectedResponse: 2, expectedError: nil, @@ -3496,27 +3501,27 @@ func Test_HandleZINTERSTORE(t *testing.T) { // Use MIN aggregate. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey7": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterStoreKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterStoreKey8": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZinterStoreDestinationKey3", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey3", "ZinterStoreKey6", "ZinterStoreKey7", "ZinterStoreKey8", "WITHSCORES", "AGGREGATE", "MIN"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 8}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, }), expectedResponse: 2, expectedError: nil, @@ -3526,27 +3531,27 @@ func Test_HandleZINTERSTORE(t *testing.T) { // Use MAX aggregate. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey9": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey10": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterStoreKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterStoreKey11": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZinterStoreDestinationKey4", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey4", "ZinterStoreKey9", "ZinterStoreKey10", "ZinterStoreKey11", "WITHSCORES", "AGGREGATE", "MAX"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, }), expectedResponse: 2, expectedError: nil, @@ -3556,27 +3561,27 @@ func Test_HandleZINTERSTORE(t *testing.T) { // Use SUM aggregate with weights modifier. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey12": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey13": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterStoreKey13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterStoreKey14": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZinterStoreDestinationKey5", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey5", "ZinterStoreKey12", "ZinterStoreKey13", "ZinterStoreKey14", "WITHSCORES", "AGGREGATE", "SUM", "WEIGHTS", "1", "5", "3"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 2808}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 2808}, }), expectedResponse: 2, expectedError: nil, @@ -3586,27 +3591,27 @@ func Test_HandleZINTERSTORE(t *testing.T) { // Use MAX aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey15": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey16": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterStoreKey16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterStoreKey17": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZinterStoreDestinationKey6", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey6", "ZinterStoreKey15", "ZinterStoreKey16", "ZinterStoreKey17", "WITHSCORES", "AGGREGATE", "MAX", "WEIGHTS", "1", "5", "3"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 3000}, {value: "eight", score: 2400}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 3000}, {Value: "eight", Score: 2400}, }), expectedResponse: 2, expectedError: nil, @@ -3616,27 +3621,27 @@ func Test_HandleZINTERSTORE(t *testing.T) { // Use MIN aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey18": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey19": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZinterStoreKey19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZinterStoreKey20": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZinterStoreDestinationKey7", command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey7", "ZinterStoreKey18", "ZinterStoreKey19", "ZinterStoreKey20", "WITHSCORES", "AGGREGATE", "MIN", "WEIGHTS", "1", "5", "3"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 5}, {value: "eight", score: 8}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 5}, {Value: "eight", Score: 8}, }), expectedResponse: 2, expectedError: nil, @@ -3644,13 +3649,13 @@ func Test_HandleZINTERSTORE(t *testing.T) { { // 8. Throw an error if there are more weights than keys preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey21": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey22": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterStoreKey22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey8", "ZinterStoreKey21", "ZinterStoreKey22", "WEIGHTS", "1", "2", "3"}, expectedResponse: 0, @@ -3659,16 +3664,16 @@ func Test_HandleZINTERSTORE(t *testing.T) { { // 9. Throw an error if there are fewer weights than keys preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey23": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZinterStoreKey24": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, + "ZinterStoreKey24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, }), - "ZinterStoreKey25": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterStoreKey25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey9", "ZinterStoreKey23", "ZinterStoreKey24", "ZinterStoreKey25", "WEIGHTS", "5", "4"}, expectedResponse: 0, @@ -3677,9 +3682,9 @@ func Test_HandleZINTERSTORE(t *testing.T) { { // 10. Throw an error if there are no keys provided preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey26": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZinterStoreKey27": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZinterStoreKey28": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterStoreKey26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZinterStoreKey27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZinterStoreKey28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTERSTORE", "WEIGHTS", "5", "4"}, expectedResponse: 0, @@ -3688,14 +3693,14 @@ func Test_HandleZINTERSTORE(t *testing.T) { { // 11. Throw an error if any of the provided keys are not sorted sets preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey29": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZinterStoreKey29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), "ZinterStoreKey30": "Default value", - "ZinterStoreKey31": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZinterStoreKey31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZINTERSTORE", "ZinterStoreKey29", "ZinterStoreKey30", "ZinterStoreKey31"}, expectedResponse: 0, @@ -3704,15 +3709,15 @@ func Test_HandleZINTERSTORE(t *testing.T) { { // 12. If any of the keys does not exist, return an empty array. preset: true, presetValues: map[string]interface{}{ - "ZinterStoreKey32": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZinterStoreKey32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZinterStoreKey33": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZinterStoreKey33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZINTERSTORE", "ZinterStoreDestinationKey12", "non-existent", "ZinterStoreKey32", "ZinterStoreKey33"}, @@ -3763,13 +3768,13 @@ func Test_HandleZINTERSTORE(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.destination); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, test.destination).(*SortedSet) + set, ok := mockServer.GetValue(ctx, test.destination).(*sorted_set.SortedSet) if !ok { t.Errorf("expected vaule at key %s to be set, got another type", test.destination) } for _, elem := range set.GetAll() { - if !test.expectedValue.Contains(elem.value) { - t.Errorf("could not find element %s in the expected values", elem.value) + if !test.expectedValue.Contains(elem.Value) { + t.Errorf("could not find element %s in the expected values", elem.Value) } } mockServer.KeyRUnlock(ctx, test.destination) @@ -3788,15 +3793,15 @@ func Test_HandleZUNION(t *testing.T) { { // 1. Get the union between 2 sorted sets. preset: true, presetValues: map[string]interface{}{ - "ZunionKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZunionKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), - "ZunionKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, command: []string{"ZUNION", "ZunionKey1", "ZunionKey2"}, @@ -3808,21 +3813,21 @@ func Test_HandleZUNION(t *testing.T) { // By default, the SUM aggregate will be used. preset: true, presetValues: map[string]interface{}{ - "ZunionKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 8}, + "ZunionKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, }), - "ZunionKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 36}, + "ZunionKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 36}, }), }, command: []string{"ZUNION", "ZunionKey3", "ZunionKey4", "ZunionKey5", "WITHSCORES"}, @@ -3838,21 +3843,21 @@ func Test_HandleZUNION(t *testing.T) { // Use MIN aggregate. preset: true, presetValues: map[string]interface{}{ - "ZunionKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey7": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionKey8": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 72}, + "ZunionKey8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, }), }, command: []string{"ZUNION", "ZunionKey6", "ZunionKey7", "ZunionKey8", "WITHSCORES", "AGGREGATE", "MIN"}, @@ -3868,21 +3873,21 @@ func Test_HandleZUNION(t *testing.T) { // Use MAX aggregate. preset: true, presetValues: map[string]interface{}{ - "ZunionKey9": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey10": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionKey11": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 72}, + "ZunionKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, }), }, command: []string{"ZUNION", "ZunionKey9", "ZunionKey10", "ZunionKey11", "WITHSCORES", "AGGREGATE", "MAX"}, @@ -3898,21 +3903,21 @@ func Test_HandleZUNION(t *testing.T) { // Use SUM aggregate with weights modifier. preset: true, presetValues: map[string]interface{}{ - "ZunionKey12": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey13": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionKey13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionKey14": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionKey14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZUNION", "ZunionKey12", "ZunionKey13", "ZunionKey14", "WITHSCORES", "AGGREGATE", "SUM", "WEIGHTS", "1", "2", "3"}, @@ -3928,21 +3933,21 @@ func Test_HandleZUNION(t *testing.T) { // Use MAX aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZunionKey15": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey16": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionKey16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionKey17": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionKey17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZUNION", "ZunionKey15", "ZunionKey16", "ZunionKey17", "WITHSCORES", "AGGREGATE", "MAX", "WEIGHTS", "1", "2", "3"}, @@ -3958,21 +3963,21 @@ func Test_HandleZUNION(t *testing.T) { // Use MIN aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZunionKey18": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey19": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionKey19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionKey20": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionKey20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZUNION", "ZunionKey18", "ZunionKey19", "ZunionKey20", "WITHSCORES", "AGGREGATE", "MIN", "WEIGHTS", "1", "2", "3"}, @@ -3985,13 +3990,13 @@ func Test_HandleZUNION(t *testing.T) { { // 8. Throw an error if there are more weights than keys preset: true, presetValues: map[string]interface{}{ - "ZunionKey21": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey22": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionKey22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZUNION", "ZunionKey21", "ZunionKey22", "WEIGHTS", "1", "2", "3"}, expectedResponse: nil, @@ -4000,16 +4005,16 @@ func Test_HandleZUNION(t *testing.T) { { // 9. Throw an error if there are fewer weights than keys preset: true, presetValues: map[string]interface{}{ - "ZunionKey23": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionKey24": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, + "ZunionKey24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, }), - "ZunionKey25": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionKey25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZUNION", "ZunionKey23", "ZunionKey24", "ZunionKey25", "WEIGHTS", "5", "4"}, expectedResponse: nil, @@ -4018,9 +4023,9 @@ func Test_HandleZUNION(t *testing.T) { { // 10. Throw an error if there are no keys provided preset: true, presetValues: map[string]interface{}{ - "ZunionKey26": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZunionKey27": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZunionKey28": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionKey26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZunionKey27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZunionKey28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZUNION", "WEIGHTS", "5", "4"}, expectedResponse: nil, @@ -4029,14 +4034,14 @@ func Test_HandleZUNION(t *testing.T) { { // 11. Throw an error if any of the provided keys are not sorted sets preset: true, presetValues: map[string]interface{}{ - "ZunionKey29": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionKey29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), "ZunionKey30": "Default value", - "ZunionKey31": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionKey31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZUNION", "ZunionKey29", "ZunionKey30", "ZunionKey31"}, expectedResponse: nil, @@ -4045,15 +4050,15 @@ func Test_HandleZUNION(t *testing.T) { { // 12. If any of the keys does not exist, skip it. preset: true, presetValues: map[string]interface{}{ - "ZunionKey32": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZunionKey32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZunionKey33": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionKey33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, command: []string{"ZUNION", "non-existent", "ZunionKey32", "ZunionKey33"}, @@ -4124,31 +4129,31 @@ func Test_HandleZUNIONSTORE(t *testing.T) { presetValues map[string]interface{} destination string command []string - expectedValue *SortedSet + expectedValue *sorted_set.SortedSet expectedResponse int expectedError error }{ { // 1. Get the union between 2 sorted sets. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey1": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, + "ZunionStoreKey1": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, }), - "ZunionStoreKey2": NewSortedSet([]MemberParam{ - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey2": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), }, destination: "ZunionStoreDestinationKey1", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey1", "ZunionStoreKey1", "ZunionStoreKey2"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), expectedResponse: 8, expectedError: nil, @@ -4158,30 +4163,30 @@ func Test_HandleZUNIONSTORE(t *testing.T) { // By default, the SUM aggregate will be used. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey3": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey3": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey4": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 8}, + "ZunionStoreKey4": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey5": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 36}, + "ZunionStoreKey5": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 36}, }), }, destination: "ZunionStoreDestinationKey2", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey2", "ZunionStoreKey3", "ZunionStoreKey4", "ZunionStoreKey5", "WITHSCORES"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 3}, {value: "two", score: 4}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 24}, - {value: "nine", score: 9}, {value: "ten", score: 10}, {value: "eleven", score: 11}, - {value: "twelve", score: 24}, {value: "thirty-six", score: 72}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 3}, {Value: "two", Score: 4}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 24}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, {Value: "eleven", Score: 11}, + {Value: "twelve", Score: 24}, {Value: "thirty-six", Score: 72}, }), expectedResponse: 13, expectedError: nil, @@ -4191,30 +4196,30 @@ func Test_HandleZUNIONSTORE(t *testing.T) { // Use MIN aggregate. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey6": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey6": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey7": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionStoreKey7": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionStoreKey8": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 72}, + "ZunionStoreKey8": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, }), }, destination: "ZunionStoreDestinationKey3", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey3", "ZunionStoreKey6", "ZunionStoreKey7", "ZunionStoreKey8", "WITHSCORES", "AGGREGATE", "MIN"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, {value: "eleven", score: 11}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 36}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, {Value: "eleven", Score: 11}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 36}, }), expectedResponse: 13, expectedError: nil, @@ -4224,32 +4229,32 @@ func Test_HandleZUNIONSTORE(t *testing.T) { // Use MAX aggregate. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey9": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey9": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey10": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionStoreKey10": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionStoreKey11": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 72}, + "ZunionStoreKey11": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, }), }, destination: "ZunionStoreDestinationKey4", command: []string{ "ZUNIONSTORE", "ZunionStoreDestinationKey4", "ZunionStoreKey9", "ZunionStoreKey10", "ZunionStoreKey11", "WITHSCORES", "AGGREGATE", "MAX", }, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "two", score: 2}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, {value: "eleven", score: 11}, - {value: "twelve", score: 12}, {value: "thirty-six", score: 72}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, {Value: "eleven", Score: 11}, + {Value: "twelve", Score: 12}, {Value: "thirty-six", Score: 72}, }), expectedResponse: 13, expectedError: nil, @@ -4259,21 +4264,21 @@ func Test_HandleZUNIONSTORE(t *testing.T) { // Use SUM aggregate with weights modifier. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey12": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey12": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey13": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionStoreKey13": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionStoreKey14": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionStoreKey14": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZunionStoreDestinationKey5", @@ -4281,11 +4286,11 @@ func Test_HandleZUNIONSTORE(t *testing.T) { "ZUNIONSTORE", "ZunionStoreDestinationKey5", "ZunionStoreKey12", "ZunionStoreKey13", "ZunionStoreKey14", "WITHSCORES", "AGGREGATE", "SUM", "WEIGHTS", "1", "2", "3", }, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 3102}, {value: "two", score: 6}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 2568}, - {value: "nine", score: 27}, {value: "ten", score: 30}, {value: "eleven", score: 22}, - {value: "twelve", score: 60}, {value: "thirty-six", score: 72}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 3102}, {Value: "two", Score: 6}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 2568}, + {Value: "nine", Score: 27}, {Value: "ten", Score: 30}, {Value: "eleven", Score: 22}, + {Value: "twelve", Score: 60}, {Value: "thirty-six", Score: 72}, }), expectedResponse: 13, expectedError: nil, @@ -4295,32 +4300,32 @@ func Test_HandleZUNIONSTORE(t *testing.T) { // Use MAX aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey15": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey15": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey16": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionStoreKey16": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionStoreKey17": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionStoreKey17": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZunionStoreDestinationKey6", command: []string{ "ZUNIONSTORE", "ZunionStoreDestinationKey6", "ZunionStoreKey15", "ZunionStoreKey16", "ZunionStoreKey17", "WITHSCORES", "AGGREGATE", "MAX", "WEIGHTS", "1", "2", "3"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 3000}, {value: "two", score: 4}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 2400}, - {value: "nine", score: 27}, {value: "ten", score: 30}, {value: "eleven", score: 22}, - {value: "twelve", score: 36}, {value: "thirty-six", score: 72}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 3000}, {Value: "two", Score: 4}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 2400}, + {Value: "nine", Score: 27}, {Value: "ten", Score: 30}, {Value: "eleven", Score: 22}, + {Value: "twelve", Score: 36}, {Value: "thirty-six", Score: 72}, }), expectedResponse: 13, expectedError: nil, @@ -4330,21 +4335,21 @@ func Test_HandleZUNIONSTORE(t *testing.T) { // Use MIN aggregate with added weights. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey18": NewSortedSet([]MemberParam{ - {value: "one", score: 100}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey18": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 100}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey19": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, {value: "eight", score: 80}, + "ZunionStoreKey19": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, {Value: "eight", Score: 80}, }), - "ZunionStoreKey20": NewSortedSet([]MemberParam{ - {value: "one", score: 1000}, {value: "eight", score: 800}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionStoreKey20": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1000}, {Value: "eight", Score: 800}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZunionStoreDestinationKey7", @@ -4352,11 +4357,11 @@ func Test_HandleZUNIONSTORE(t *testing.T) { "ZUNIONSTORE", "ZunionStoreDestinationKey7", "ZunionStoreKey18", "ZunionStoreKey19", "ZunionStoreKey20", "WITHSCORES", "AGGREGATE", "MIN", "WEIGHTS", "1", "2", "3", }, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 2}, {value: "two", score: 2}, {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 27}, {value: "ten", score: 30}, {value: "eleven", score: 22}, - {value: "twelve", score: 24}, {value: "thirty-six", score: 72}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 2}, {Value: "two", Score: 2}, {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 27}, {Value: "ten", Score: 30}, {Value: "eleven", Score: 22}, + {Value: "twelve", Score: 24}, {Value: "thirty-six", Score: 72}, }), expectedResponse: 13, expectedError: nil, @@ -4364,13 +4369,13 @@ func Test_HandleZUNIONSTORE(t *testing.T) { { // 8. Throw an error if there are more weights than keys preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey21": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey21": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey22": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionStoreKey22": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, destination: "ZunionStoreDestinationKey8", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey8", "ZunionStoreKey21", "ZunionStoreKey22", "WEIGHTS", "1", "2", "3"}, @@ -4380,16 +4385,16 @@ func Test_HandleZUNIONSTORE(t *testing.T) { { // 9. Throw an error if there are fewer weights than keys preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey23": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey23": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), - "ZunionStoreKey24": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, + "ZunionStoreKey24": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, }), - "ZunionStoreKey25": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionStoreKey25": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, destination: "ZunionStoreDestinationKey9", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey9", "ZunionStoreKey23", "ZunionStoreKey24", "ZunionStoreKey25", "WEIGHTS", "5", "4"}, @@ -4399,9 +4404,9 @@ func Test_HandleZUNIONSTORE(t *testing.T) { { // 10. Throw an error if there are no keys provided preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey26": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZunionStoreKey27": NewSortedSet([]MemberParam{{value: "one", score: 1}}), - "ZunionStoreKey28": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionStoreKey26": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZunionStoreKey27": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), + "ZunionStoreKey28": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, command: []string{"ZUNIONSTORE", "WEIGHTS", "5", "4"}, expectedResponse: 0, @@ -4410,14 +4415,14 @@ func Test_HandleZUNIONSTORE(t *testing.T) { { // 11. Throw an error if any of the provided keys are not sorted sets preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey29": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "three", score: 3}, {value: "four", score: 4}, - {value: "five", score: 5}, {value: "six", score: 6}, - {value: "seven", score: 7}, {value: "eight", score: 8}, + "ZunionStoreKey29": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "three", Score: 3}, {Value: "four", Score: 4}, + {Value: "five", Score: 5}, {Value: "six", Score: 6}, + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, }), "ZunionStoreKey30": "Default value", - "ZunionStoreKey31": NewSortedSet([]MemberParam{{value: "one", score: 1}}), + "ZunionStoreKey31": sorted_set.NewSortedSet([]sorted_set.MemberParam{{Value: "one", Score: 1}}), }, destination: "ZunionStoreDestinationKey11", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey11", "ZunionStoreKey29", "ZunionStoreKey30", "ZunionStoreKey31"}, @@ -4427,23 +4432,23 @@ func Test_HandleZUNIONSTORE(t *testing.T) { { // 12. If any of the keys does not exist, skip it. preset: true, presetValues: map[string]interface{}{ - "ZunionStoreKey32": NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, - {value: "thirty-six", score: 36}, {value: "twelve", score: 12}, - {value: "eleven", score: 11}, + "ZunionStoreKey32": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, + {Value: "thirty-six", Score: 36}, {Value: "twelve", Score: 12}, + {Value: "eleven", Score: 11}, }), - "ZunionStoreKey33": NewSortedSet([]MemberParam{ - {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, - {value: "twelve", score: 12}, + "ZunionStoreKey33": sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, + {Value: "twelve", Score: 12}, }), }, destination: "ZunionStoreDestinationKey12", command: []string{"ZUNIONSTORE", "ZunionStoreDestinationKey12", "non-existent", "ZunionStoreKey32", "ZunionStoreKey33"}, - expectedValue: NewSortedSet([]MemberParam{ - {value: "one", score: 1}, {value: "two", score: 2}, {value: "seven", score: 7}, {value: "eight", score: 8}, - {value: "nine", score: 9}, {value: "ten", score: 10}, {value: "eleven", score: 11}, {value: "twelve", score: 12}, - {value: "thirty-six", score: 36}, + expectedValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ + {Value: "one", Score: 1}, {Value: "two", Score: 2}, {Value: "seven", Score: 7}, {Value: "eight", Score: 8}, + {Value: "nine", Score: 9}, {Value: "ten", Score: 10}, {Value: "eleven", Score: 11}, {Value: "twelve", Score: 12}, + {Value: "thirty-six", Score: 36}, }), expectedResponse: 9, expectedError: nil, @@ -4492,13 +4497,13 @@ func Test_HandleZUNIONSTORE(t *testing.T) { if _, err = mockServer.KeyRLock(ctx, test.destination); err != nil { t.Error(err) } - set, ok := mockServer.GetValue(ctx, test.destination).(*SortedSet) + set, ok := mockServer.GetValue(ctx, test.destination).(*sorted_set.SortedSet) if !ok { t.Errorf("expected vaule at key %s to be set, got another type", test.destination) } for _, elem := range set.GetAll() { - if !test.expectedValue.Contains(elem.value) { - t.Errorf("could not find element %s in the expected values", elem.value) + if !test.expectedValue.Contains(elem.Value) { + t.Errorf("could not find element %s in the expected values", elem.Value) } } mockServer.KeyRUnlock(ctx, test.destination) diff --git a/pkg/modules/sorted_set/utils.go b/pkg/modules/sorted_set/utils.go index fd9bd98..bde1a24 100644 --- a/pkg/modules/sorted_set/utils.go +++ b/pkg/modules/sorted_set/utils.go @@ -15,7 +15,6 @@ package sorted_set import ( - "cmp" "errors" "slices" "strconv" @@ -91,109 +90,3 @@ func extractKeysWeightsAggregateWithScores(cmd []string) ([]string, []int, strin return keys, weights, aggregate, withscores, nil } - -func validateUpdatePolicy(updatePolicy interface{}) (string, error) { - if updatePolicy == nil { - return "", nil - } - err := errors.New("update policy must be a string of value NX or XX") - policy, ok := updatePolicy.(string) - if !ok { - return "", err - } - if !slices.Contains([]string{"nx", "xx"}, strings.ToLower(policy)) { - return "", err - } - return policy, nil -} - -func validateComparison(comparison interface{}) (string, error) { - if comparison == nil { - return "", nil - } - err := errors.New("comparison condition must be a string of value LT or GT") - comp, ok := comparison.(string) - if !ok { - return "", err - } - if !slices.Contains([]string{"lt", "gt"}, strings.ToLower(comp)) { - return "", err - } - return comp, nil -} - -func validateChanged(changed interface{}) (string, error) { - if changed == nil { - return "", nil - } - err := errors.New("changed condition should be a string of value CH") - ch, ok := changed.(string) - if !ok { - return "", err - } - if !strings.EqualFold(ch, "ch") { - return "", err - } - return ch, nil -} - -func validateIncr(incr interface{}) (string, error) { - if incr == nil { - return "", nil - } - err := errors.New("incr condition should be a string of value INCR") - i, ok := incr.(string) - if !ok { - return "", err - } - if !strings.EqualFold(i, "incr") { - return "", err - } - return i, nil -} - -func compareScores(old Score, new Score, comp string) Score { - switch strings.ToLower(comp) { - default: - return new - case "lt": - if new < old { - return new - } - return old - case "gt": - if new > old { - return new - } - return old - } -} - -// compareLex returns -1 when s2 is lexicographically greater than s1, -// 0 if they're equal and 1 if s2 is lexicographically less than s1. -func compareLex(s1 string, s2 string) int { - if s1 == s2 { - return 0 - } - if strings.Contains(s1, s2) { - return 1 - } - if strings.Contains(s2, s1) { - return -1 - } - - limit := len(s1) - if len(s2) < limit { - limit = len(s2) - } - - var c int - for i := 0; i < limit; i++ { - c = cmp.Compare(s1[i], s2[i]) - if c != 0 { - break - } - } - - return c -}