Skip to content

Commit 2648aad

Browse files
committed
Implement new TDIGEST commands and TDIGEST.CREATE compression (#33)
* Update Tdigest Commands * Fix Rank Commands Tests
1 parent 71f264d commit 2648aad

File tree

5 files changed

+426
-152
lines changed

5 files changed

+426
-152
lines changed

src/NRedisStack/ResponseParser.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -368,11 +368,11 @@ public static IReadOnlyList<TimeSeriesRule> ToRuleArray(this RedisResult result)
368368

369369
public static TdigestInformation ToTdigestInfo(this RedisResult result) //TODO: Think about a different implementation, because if the output of CMS.INFO changes or even just the names of the labels then the parsing will not work
370370
{
371-
long compression, capacity, mergedNodes, unmergedNodes, totalCompressions;
372-
double mergedWeight, unmergedWeight;
371+
long compression, capacity, mergedNodes, unmergedNodes, totalCompressions, memoryUsage;
372+
double mergedWeight, unmergedWeight, sumWeight;
373373

374-
compression = capacity = mergedNodes = unmergedNodes = totalCompressions = -1;
375-
mergedWeight = unmergedWeight = -1.0;
374+
compression = capacity = mergedNodes = unmergedNodes = totalCompressions = memoryUsage = -1;
375+
mergedWeight = unmergedWeight = sumWeight = -1.0;
376376

377377
RedisResult[] redisResults = result.ToArray();
378378

@@ -395,20 +395,25 @@ public static IReadOnlyList<TimeSeriesRule> ToRuleArray(this RedisResult result)
395395
unmergedNodes = (long)redisResults[i];
396396
break;
397397
case "Merged weight":
398-
399398
mergedWeight = (double)redisResults[i];
400399
break;
401400
case "Unmerged weight":
402401
unmergedWeight = (double)redisResults[i];
403402
break;
403+
case "Sum weights":
404+
sumWeight = (double)redisResults[i];
405+
break;
404406
case "Total compressions":
405407
totalCompressions = (long)redisResults[i];
406408
break;
409+
case "Memory usage":
410+
memoryUsage = (long)redisResults[i];
411+
break;
407412
}
408413
}
409414

410415
return new TdigestInformation(compression, capacity, mergedNodes, unmergedNodes,
411-
mergedWeight, unmergedWeight, totalCompressions);
416+
mergedWeight, unmergedWeight, sumWeight, totalCompressions, memoryUsage);
412417
}
413418

414419
public static TimeSeriesInformation ToTimeSeriesInfo(this RedisResult result)
@@ -531,7 +536,7 @@ public static IReadOnlyList<string> ToStringArray(this RedisResult result)
531536
Array.ForEach(redisResults, str => list.Add((string)str));
532537
return list;
533538
}
534-
539+
535540
public static long?[] ToNullableLongArray(this RedisResult result)
536541
{
537542
if (result.IsNull)

src/NRedisStack/Tdigest/DataTypes/TdigestInformation.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ public class TdigestInformation
1212
public long UnmergedNodes { get; private set; }
1313
public double MergedWeight { get; private set; }
1414
public double UnmergedWeight { get; private set; }
15-
15+
public double SumWeights { get; private set; }
1616
public long TotalCompressions { get; private set; }
17+
public long MemoryUsage { get; private set; }
1718

1819

1920
internal TdigestInformation(long compression, long capacity, long mergedNodes,
2021
long unmergedNodes, double mergedWeight,
21-
double unmergedWeight, long totalCompressions)
22+
double unmergedWeight, double sumWeights, long totalCompressions, long memoryUsage)
2223

2324
{
2425
Compression = compression;
@@ -27,7 +28,9 @@ internal TdigestInformation(long compression, long capacity, long mergedNodes,
2728
UnmergedNodes = unmergedNodes;
2829
MergedWeight = mergedWeight;
2930
UnmergedWeight = unmergedWeight;
31+
SumWeights = sumWeights;
3032
TotalCompressions = totalCompressions;
33+
MemoryUsage = memoryUsage;
3134
}
3235
}
3336
}

src/NRedisStack/Tdigest/Literals/Commands.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,9 @@ internal class TDIGEST
1313
public const string CDF = "TDIGEST.CDF";
1414
public const string TRIMMED_MEAN = "TDIGEST.TRIMMED_MEAN";
1515
public const string INFO = "TDIGEST.INFO";
16+
public const string RANK = "TDIGEST.RANK";
17+
public const string REVRANK = "TDIGEST.REVRANK";
18+
public const string BYRANK = "TDIGEST.BYRANK";
19+
public const string BYREVRANK = "TDIGEST.BYREVRANK";
1620
}
1721
}

0 commit comments

Comments
 (0)