-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathMRangeExample.cs
166 lines (160 loc) · 8.4 KB
/
MRangeExample.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
using System;
using System.Collections.Generic;
using StackExchange.Redis;
using NRedisTimeSeries.Commands.Enums;
using NRedisTimeSeries.DataTypes;
namespace NRedisTimeSeries.Example
{
/// <summary>
/// Examples for NRedisTimeSeries API for MRANGE queries.
/// </summary>
internal class MRangeExample
{
/// <summary>
/// Example for basic usage of RedisTimeSeries RANGE command with "-" and "+" as range boundreis and a filter.
/// NRedisTimeSeris MRange is expecting two TimeStamps objects as the range boundries.
/// In this case, the strings are implicitly casted into TimeStamp objects.
/// The TimeSeriesMRange command returns an IReadOnlyList<(string key, IReadOnlyList<TimeSeriesLabel> labels, IReadOnlyList<TimeSeriesTuple> values)>collection.
/// </summary>
public static void BasicMRangeExample()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
var filter = new List<string> { "MRANGEkey=MRANGEvalue" };
var results = db.TimeSeriesMRange("-", "+", filter);
// Values extraction example. No lables in this case.
foreach (var result in results)
{
Console.WriteLine(result.key);
IReadOnlyList<TimeSeriesTuple> values = result.values;
foreach(TimeSeriesTuple val in values){
Console.WriteLine(val);
}
}
redis.Close();
}
/// <summary>
/// Example for basic usage of RedisTimeSeries RANGE command with "-" and "+" as range boundreis, a filter and the COUNT parameter.
/// NRedisTimeSeris MRange is expecting two TimeStamps objects as the range boundries.
/// In this case, the strings are implicitly casted into TimeStamp objects.
/// The TimeSeriesMRange command returns an IReadOnlyList (collection) of (string key, IReadOnlyList(TimeSeriesLabel) labels, IReadOnlyList(TimeSeriesTuple) values).
/// </summary>
public static void CountMRangeExample()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
var filter = new List<string> { "MRANGEkey=MRANGEvalue" };
var results = db.TimeSeriesMRange("-", "+", filter, count: 50);
// Values extraction example. No lables in this case.
foreach (var result in results)
{
Console.WriteLine(result.key);
IReadOnlyList<TimeSeriesTuple> values = result.values;
foreach(TimeSeriesTuple val in values){
Console.WriteLine(val);
}
}
redis.Close();
}
/// <summary>
/// Example for basic usage of RedisTimeSeries RANGE command with "-" and "+" as range boundreis, a filter and MIN aggregation.
/// NRedisTimeSeris MRange is expecting two TimeStamps objects as the range boundries.
/// In this case, the strings are implicitly casted into TimeStamp objects.
/// The TimeSeriesMRange command returns an IReadOnlyList (collection) of (string key, IReadOnlyList(TimeSeriesLabel) labels, IReadOnlyList(TimeSeriesTuple) values).
/// </summary>
public static void MRangeAggregationExample()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
var filter = new List<string> { "MRANGEkey=MRANGEvalue" };
var results = db.TimeSeriesMRange("-", "+", filter, aggregation: TsAggregation.Min, timeBucket: 50);
// Values extraction example. No lables in this case.
foreach (var result in results)
{
Console.WriteLine(result.key);
IReadOnlyList<TimeSeriesTuple> values = result.values;
foreach(TimeSeriesTuple val in values){
Console.WriteLine(val);
}
}
redis.Close();
}
/// <summary>
/// Example for basic usage of RedisTimeSeries RANGE command with "-" and "+" as range boundreis, a filter and WITHLABELS flag.
/// NRedisTimeSeris MRange is expecting two TimeStamps objects as the range boundries.
/// In this case, the strings are implicitly casted into TimeStamp objects.
/// The TimeSeriesMRange command returns an IReadOnlyList (collection) of (string key, IReadOnlyList(TimeSeriesLabel) labels, IReadOnlyList(TimeSeriesTuple) values).
/// </summary>
public static void MRangeWithLabelsExample()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
var filter = new List<string> { "MRANGEkey=MRANGEvalue" };
var results = db.TimeSeriesMRange("-", "+", filter, withLabels: true);
// Values extraction example.
foreach (var result in results)
{
Console.WriteLine(result.key);
IReadOnlyList<TimeSeriesLabel> labels = result.labels;
foreach(TimeSeriesLabel label in labels){
Console.WriteLine(label);
}
IReadOnlyList<TimeSeriesTuple> values = result.values;
foreach(TimeSeriesTuple val in values){
Console.WriteLine(val);
}
}
redis.Close();
}
/// <summary>
/// Example for basic usage of RedisTimeSeries RANGE command with "-" and "+" as range boundreis, a filter and a Groupby concept.
/// NRedisTimeSeris MRange is expecting two TimeStamps objects as the range boundries.
/// In this case, the strings are implicitly casted into TimeStamp objects.
/// The TimeSeriesMRange command returns an IReadOnlyList (collection) of (string key, IReadOnlyList(TimeSeriesLabel) labels, IReadOnlyList(TimeSeriesTuple) values).
/// </summary>
public static void MRangeWithGroupbyExample()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
var filter = new List<string> { "MRANGEkey=MRANGEvalue" };
var results = db.TimeSeriesMRange("-", "+", filter, withLabels: true, groupbyTuple: ("labelName", TsReduce.Max));
// Values extraction example.
foreach (var result in results)
{
Console.WriteLine(result.key);
IReadOnlyList<TimeSeriesLabel> labels = result.labels;
foreach(TimeSeriesLabel label in labels){
Console.WriteLine(label);
}
IReadOnlyList<TimeSeriesTuple> values = result.values;
foreach(TimeSeriesTuple val in values){
Console.WriteLine(val);
}
}
redis.Close();
}
/// <summary>
/// Example for basic usage of RedisTimeSeries RANGE command with "-" and "+" as range boundreis, and a FILTER_BY concept.
/// NRedisTimeSeris MRange is expecting two TimeStamps objects as the range boundries.
/// In this case, the strings are implicitly casted into TimeStamp objects.
/// The TimeSeriesMRange command returns an IReadOnlyList (collection) of (string key, IReadOnlyList(TimeSeriesLabel) labels, IReadOnlyList(TimeSeriesTuple) values).
/// </summary>
public static void MRangeWithFilterbyExample()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
var filter = new List<string> { "MRANGEkey=MRANGEvalue" };
var results = db.TimeSeriesMRange("-", "+", filter, filterByTs: new List<TimeStamp> {0}, filterByValue: (0, 2));
// Values extraction example. No lables in this case.
foreach (var result in results)
{
Console.WriteLine(result.key);
IReadOnlyList<TimeSeriesTuple> values = result.values;
foreach(TimeSeriesTuple val in values){
Console.WriteLine(val);
}
}
redis.Close();
}
}
}