Skip to content

Commit ac9cf42

Browse files
ashtulgkorland
authored andcommitted
Update for TopK.Add which returns expelled items (#3)
* bloom client + tests
1 parent 231bc91 commit ac9cf42

File tree

2 files changed

+33
-24
lines changed

2 files changed

+33
-24
lines changed

redisbloom/client.py

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ def spaceHolder(response):
3535
def parseToList(response):
3636
res = []
3737
for item in response:
38-
res.append(nativestr(item))
38+
if item is not None:
39+
res.append(nativestr(item))
40+
else:
41+
res.append(None)
3942
return res
4043

4144
class Client(Redis): #changed from StrictRedis
@@ -101,34 +104,35 @@ def __init__(self, *args, **kwargs):
101104
self.BF_RESERVE : bool_ok,
102105
#self.BF_ADD : spaceHolder,
103106
#self.BF_MADD : spaceHolder,
104-
self.BF_INSERT : spaceHolder,
105-
self.BF_EXISTS : spaceHolder,
106-
self.BF_MEXISTS : spaceHolder,
107-
self.BF_SCANDUMP : spaceHolder,
108-
self.BF_LOADCHUNK : spaceHolder,
107+
#self.BF_INSERT : spaceHolder,
108+
#self.BF_EXISTS : spaceHolder,
109+
#self.BF_MEXISTS : spaceHolder,
110+
#self.BF_SCANDUMP : spaceHolder,
111+
#self.BF_LOADCHUNK : spaceHolder,
109112

110113
self.CF_RESERVE : bool_ok,
111-
self.CF_ADD : spaceHolder,
112-
self.CF_ADDNX : spaceHolder,
113-
self.CF_INSERT : spaceHolder,
114-
self.CF_INSERTNX : spaceHolder,
115-
self.CF_EXISTS : spaceHolder,
116-
self.CF_DEL : spaceHolder,
117-
self.CF_COUNT : spaceHolder,
118-
self.CF_SCANDUMP : spaceHolder,
119-
self.CF_LOADDUMP : spaceHolder,
114+
#self.CF_ADD : spaceHolder,
115+
#self.CF_ADDNX : spaceHolder,
116+
#self.CF_INSERT : spaceHolder,
117+
#self.CF_INSERTNX : spaceHolder,
118+
#self.CF_EXISTS : spaceHolder,
119+
#self.CF_DEL : spaceHolder,
120+
#self.CF_COUNT : spaceHolder,
121+
#self.CF_SCANDUMP : spaceHolder,
122+
#self.CF_LOADDUMP : spaceHolder,
123+
120124

121125
self.CMS_INITBYDIM : bool_ok,
122126
self.CMS_INITBYPROB : bool_ok,
123127
self.CMS_INCRBY : bool_ok,
124-
self.CMS_QUERY : spaceHolder,
128+
#self.CMS_QUERY : spaceHolder,
125129
self.CMS_MERGE : bool_ok,
126130
self.CMS_INFO : CMSInfo,
127131

128132
self.TOPK_RESERVE : bool_ok,
129-
self.TOPK_ADD : bool_ok,
130-
self.TOPK_QUERY : spaceHolder,
131-
self.TOPK_COUNT : spaceHolder,
133+
self.TOPK_ADD : parseToList,
134+
#self.TOPK_QUERY : spaceHolder,
135+
#self.TOPK_COUNT : spaceHolder,
132136
self.TOPK_LIST : parseToList,
133137
self.TOPK_INFO : TopKInfo,
134138
}
@@ -460,10 +464,13 @@ def topkList(self, key):
460464
"""
461465
Return full list of items in Top-K list of ``key```.
462466
"""
467+
463468
return self.execute_command(self.TOPK_LIST, key)
464469

465470
def topkInfo(self, key):
466471
"""
467472
Returns k, width, depth and decay values of ``key``.
468473
"""
469-
return self.execute_command(self.TOPK_INFO, key)
474+
475+
return self.execute_command(self.TOPK_INFO, key)
476+

test_commands.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,12 @@ def testCMSMerge(self):
154154
################### Test Top-K ###################
155155
def testTopK(self):
156156
# test list with empty buckets
157-
self.assertTrue(rb.topkReserve('topk', 10, 50, 3, 0.9))
158-
self.assertTrue(rb.topkAdd('topk', 'A', 'B', 'C', 'D', 'E', 'A', 'A', 'B', 'C',
159-
'G', 'D', 'B', 'D', 'A', 'E', 'E'))
160-
self.assertEqual([1, 1, 1, 1, 1, 0, 1],
157+
self.assertTrue(rb.topkReserve('topk', 3, 50, 4, 0.9))
158+
self.assertEqual([None, None, None, None, None, None, None, None,
159+
None, None, None, None, 'C', None, None, None, None],
160+
rb.topkAdd('topk', 'A', 'B', 'C', 'D', 'E', 'A', 'A', 'B', 'C',
161+
'G', 'D', 'B', 'D', 'A', 'E', 'E', 1))
162+
self.assertEqual([1, 1, 0, 1, 0, 0, 0],
161163
rb.topkQuery('topk', 'A', 'B', 'C', 'D', 'E', 'F', 'G'))
162164
self.assertEqual([4, 3, 2, 3, 3, 0, 1],
163165
rb.topkCount('topk', 'A', 'B', 'C', 'D', 'E', 'F', 'G'))

0 commit comments

Comments
 (0)