diff --git a/redisbloom/client.py b/redisbloom/client.py index 0cba860..845c082 100644 --- a/redisbloom/client.py +++ b/redisbloom/client.py @@ -35,7 +35,10 @@ def spaceHolder(response): def parseToList(response): res = [] for item in response: - res.append(nativestr(item)) + if item is not None: + res.append(nativestr(item)) + else: + res.append(None) return res class Client(Redis): #changed from StrictRedis @@ -101,34 +104,35 @@ def __init__(self, *args, **kwargs): self.BF_RESERVE : bool_ok, #self.BF_ADD : spaceHolder, #self.BF_MADD : spaceHolder, - self.BF_INSERT : spaceHolder, - self.BF_EXISTS : spaceHolder, - self.BF_MEXISTS : spaceHolder, - self.BF_SCANDUMP : spaceHolder, - self.BF_LOADCHUNK : spaceHolder, + #self.BF_INSERT : spaceHolder, + #self.BF_EXISTS : spaceHolder, + #self.BF_MEXISTS : spaceHolder, + #self.BF_SCANDUMP : spaceHolder, + #self.BF_LOADCHUNK : spaceHolder, self.CF_RESERVE : bool_ok, - self.CF_ADD : spaceHolder, - self.CF_ADDNX : spaceHolder, - self.CF_INSERT : spaceHolder, - self.CF_INSERTNX : spaceHolder, - self.CF_EXISTS : spaceHolder, - self.CF_DEL : spaceHolder, - self.CF_COUNT : spaceHolder, - self.CF_SCANDUMP : spaceHolder, - self.CF_LOADDUMP : spaceHolder, + #self.CF_ADD : spaceHolder, + #self.CF_ADDNX : spaceHolder, + #self.CF_INSERT : spaceHolder, + #self.CF_INSERTNX : spaceHolder, + #self.CF_EXISTS : spaceHolder, + #self.CF_DEL : spaceHolder, + #self.CF_COUNT : spaceHolder, + #self.CF_SCANDUMP : spaceHolder, + #self.CF_LOADDUMP : spaceHolder, + self.CMS_INITBYDIM : bool_ok, self.CMS_INITBYPROB : bool_ok, self.CMS_INCRBY : bool_ok, - self.CMS_QUERY : spaceHolder, + #self.CMS_QUERY : spaceHolder, self.CMS_MERGE : bool_ok, self.CMS_INFO : CMSInfo, self.TOPK_RESERVE : bool_ok, - self.TOPK_ADD : bool_ok, - self.TOPK_QUERY : spaceHolder, - self.TOPK_COUNT : spaceHolder, + self.TOPK_ADD : parseToList, + #self.TOPK_QUERY : spaceHolder, + #self.TOPK_COUNT : spaceHolder, self.TOPK_LIST : parseToList, self.TOPK_INFO : TopKInfo, } @@ -460,10 +464,13 @@ def topkList(self, key): """ Return full list of items in Top-K list of ``key```. """ + return self.execute_command(self.TOPK_LIST, key) def topkInfo(self, key): """ Returns k, width, depth and decay values of ``key``. """ - return self.execute_command(self.TOPK_INFO, key) \ No newline at end of file + + return self.execute_command(self.TOPK_INFO, key) + diff --git a/test_commands.py b/test_commands.py index 4fce130..a8451b5 100644 --- a/test_commands.py +++ b/test_commands.py @@ -154,10 +154,12 @@ def testCMSMerge(self): ################### Test Top-K ################### def testTopK(self): # test list with empty buckets - self.assertTrue(rb.topkReserve('topk', 10, 50, 3, 0.9)) - self.assertTrue(rb.topkAdd('topk', 'A', 'B', 'C', 'D', 'E', 'A', 'A', 'B', 'C', - 'G', 'D', 'B', 'D', 'A', 'E', 'E')) - self.assertEqual([1, 1, 1, 1, 1, 0, 1], + self.assertTrue(rb.topkReserve('topk', 3, 50, 4, 0.9)) + self.assertEqual([None, None, None, None, None, None, None, None, + None, None, None, None, 'C', None, None, None, None], + rb.topkAdd('topk', 'A', 'B', 'C', 'D', 'E', 'A', 'A', 'B', 'C', + 'G', 'D', 'B', 'D', 'A', 'E', 'E', 1)) + self.assertEqual([1, 1, 0, 1, 0, 0, 0], rb.topkQuery('topk', 'A', 'B', 'C', 'D', 'E', 'F', 'G')) self.assertEqual([4, 3, 2, 3, 3, 0, 1], rb.topkCount('topk', 'A', 'B', 'C', 'D', 'E', 'F', 'G'))