@@ -25,9 +25,11 @@ def __init__(self, key_groupings = None):
25
25
self .aggregates = {}
26
26
self .scatters = {}
27
27
self .histograms = {}
28
+ self .metadata = {}
28
29
29
30
def next_record (self , record ):
30
31
self .add_aggregate ('database_memory' , record .database , record .bytes )
32
+ self .add_aggregate ('database_memory' , 'all' , record .bytes )
31
33
self .add_aggregate ('type_memory' , record .type , record .bytes )
32
34
self .add_aggregate ('encoding_memory' , record .encoding , record .bytes )
33
35
@@ -47,7 +49,7 @@ def next_record(self, record):
47
49
self .add_scatter ('sortedset_memory_by_length' , record .bytes , record .size )
48
50
elif record .type == 'string' :
49
51
self .add_scatter ('string_memory_by_length' , record .bytes , record .size )
50
- elif record .type == 'dict' :
52
+ elif record .type in [ 'dict' , 'module' , 'stream' ] :
51
53
pass
52
54
else :
53
55
raise Exception ('Invalid data type %s' % record .type )
@@ -74,9 +76,12 @@ def add_scatter(self, heading, x, y):
74
76
if not heading in self .scatters :
75
77
self .scatters [heading ] = []
76
78
self .scatters [heading ].append ([x , y ])
79
+
80
+ def set_metadata (self , key , val ):
81
+ self .metadata [key ] = val
77
82
78
83
def get_json (self ):
79
- return json .dumps ({"aggregates" :self .aggregates , "scatters" :self .scatters , "histograms" :self .histograms })
84
+ return json .dumps ({"aggregates" : self .aggregates , "scatters" : self .scatters , "histograms" : self .histograms , "metadata" : self . metadata })
80
85
81
86
class PrintAllKeys (object ):
82
87
def __init__ (self , out , bytes , largest ):
@@ -159,7 +164,6 @@ def start_rdb(self):
159
164
pass
160
165
161
166
def aux_field (self , key , value ):
162
- #print('aux: %s %s' % (key, value))
163
167
if key == 'used-mem' :
164
168
self ._aux_used_mem = int (value )
165
169
if key == 'redis-ver' :
@@ -179,9 +183,13 @@ def end_database(self, db_number):
179
183
self ._stream .end_database (db_number )
180
184
181
185
def end_rdb (self ):
182
- #print('internal fragmentation: %s' % self._total_internal_frag)
183
186
if hasattr (self ._stream , 'end_rdb' ):
184
187
self ._stream .end_rdb ()
188
+ if hasattr (self ._stream , 'set_metadata' ):
189
+ self ._stream .set_metadata ('used_mem' , self ._aux_used_mem )
190
+ self ._stream .set_metadata ('redis_ver' , self ._aux_redis_ver )
191
+ self ._stream .set_metadata ('redis_bits' , self ._aux_redis_bits )
192
+ self ._stream .set_metadata ('internal_frag' , self ._total_internal_frag )
185
193
186
194
def set (self , key , value , expiry , info ):
187
195
self ._current_encoding = info ['encoding' ]
0 commit comments