@@ -96,13 +96,15 @@ def __init__(self, prefix='ts:', vnodes=64, **options):
9696 self .cluster , options = get_cluster_from_options (self , options )
9797 self .prefix = prefix
9898 self .vnodes = vnodes
99+ self .enable_frequency_sketches = options .pop ('enable_frequency_sketches' , False )
99100 super (RedisTSDB , self ).__init__ (** options )
100101
101102 def validate (self ):
102103 logger .debug ('Validating Redis version...' )
104+ version = Version ((2 , 8 , 18 )) if self .enable_frequency_sketches else Version ((2 , 8 , 9 ))
103105 check_cluster_versions (
104106 self .cluster ,
105- Version (( 2 , 8 , 9 )) ,
107+ version ,
106108 label = 'TSDB' ,
107109 )
108110
@@ -296,6 +298,9 @@ def make_frequency_table_keys(self, model, rollup, timestamp, key):
296298 )
297299
298300 def record_frequency_multi (self , requests , timestamp = None ):
301+ if not self .enable_frequency_sketches :
302+ return
303+
299304 if timestamp is None :
300305 timestamp = timezone .now ()
301306
@@ -332,6 +337,9 @@ def record_frequency_multi(self, requests, timestamp=None):
332337 self .cluster .execute_commands (commands )
333338
334339 def get_most_frequent (self , model , keys , start , end = None , rollup = None , limit = None ):
340+ if not self .enable_frequency_sketches :
341+ raise NotImplementedError ("Frequency sketches are disabled." )
342+
335343 rollup , series = self .get_optimal_rollup_series (start , end , rollup )
336344
337345 commands = {}
@@ -354,6 +362,9 @@ def get_most_frequent(self, model, keys, start, end=None, rollup=None, limit=Non
354362 return results
355363
356364 def get_frequency_series (self , model , items , start , end = None , rollup = None ):
365+ if not self .enable_frequency_sketches :
366+ raise NotImplementedError ("Frequency sketches are disabled." )
367+
357368 rollup , series = self .get_optimal_rollup_series (start , end , rollup )
358369
359370 # Freeze ordering of the members (we'll need these later.)
@@ -381,6 +392,9 @@ def get_frequency_series(self, model, items, start, end=None, rollup=None):
381392 return results
382393
383394 def get_frequency_totals (self , model , items , start , end = None , rollup = None ):
395+ if not self .enable_frequency_sketches :
396+ raise NotImplementedError ("Frequency sketches are disabled." )
397+
384398 responses = {}
385399
386400 for key , series in self .get_frequency_series (model , items , start , end , rollup ).iteritems ():
0 commit comments