From a9f09babbfea170ae67fc1386aad710c718ad925 Mon Sep 17 00:00:00 2001 From: Francesco Capponi Date: Tue, 1 Sep 2020 11:28:28 -0700 Subject: [PATCH 1/3] Redis 3.2.0 compatible (#1) * Redis 3.2.0 compatible --- setup.py | 2 +- stream_framework/storage/redis/structures/base.py | 4 ++-- .../storage/redis/structures/sorted_set.py | 3 ++- stream_framework/tests/storage/redis/structures.py | 10 +++++----- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index 469b2751..7d91c931 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ extras_require = { 'test': tests_require, - 'redis': ['redis>=2.8.0'], + 'redis': ['redis>=3.2.0'], 'cassandra': ['cassandra-driver>=2.7.2'], } diff --git a/stream_framework/storage/redis/structures/base.py b/stream_framework/storage/redis/structures/base.py index 7c942fdb..a2c01742 100644 --- a/stream_framework/storage/redis/structures/base.py +++ b/stream_framework/storage/redis/structures/base.py @@ -1,5 +1,5 @@ from stream_framework.storage.redis.connection import get_redis_connection -from redis.client import BasePipeline +from redis.client import Pipeline class RedisCache(object): @@ -49,7 +49,7 @@ def _pipeline_if_needed(self, operation, *args, **kwargs): If the redis connection is already in distributed state use it Otherwise spawn a new distributed connection using .map ''' - pipe_needed = not isinstance(self.redis, BasePipeline) + pipe_needed = not isinstance(self.redis, Pipeline) if pipe_needed: pipe = self.redis.pipeline(transaction=False) operation(pipe, *args, **kwargs) diff --git a/stream_framework/storage/redis/structures/sorted_set.py b/stream_framework/storage/redis/structures/sorted_set.py index bb2d9e33..ac7e5ce6 100644 --- a/stream_framework/storage/redis/structures/sorted_set.py +++ b/stream_framework/storage/redis/structures/sorted_set.py @@ -63,7 +63,8 @@ def _add_many(redis, score_value_pairs): score_value_chunks = chunks(score_value_list, 200) for score_value_chunk in score_value_chunks: - result = redis.zadd(key, *score_value_chunk) + # redis >3.2 requires a dictionary + result = redis.zadd(key, {k:v for k, v in score_value_chunks}) logger.debug('adding to %s with score_value_chunk %s', key, score_value_chunk) results.append(result) diff --git a/stream_framework/tests/storage/redis/structures.py b/stream_framework/tests/storage/redis/structures.py index 89db0fd2..3f9e1f4c 100644 --- a/stream_framework/tests/storage/redis/structures.py +++ b/stream_framework/tests/storage/redis/structures.py @@ -163,11 +163,11 @@ def test_zremrangebyrank(self): key = 'test' # start out fresh redis.delete(key) - redis.zadd(key, 1, 'a') - redis.zadd(key, 2, 'b') - redis.zadd(key, 3, 'c') - redis.zadd(key, 4, 'd') - redis.zadd(key, 5, 'e') + redis.zadd(key, {1, 'a'}) + redis.zadd(key, {2, 'b'}) + redis.zadd(key, {3, 'c'}) + redis.zadd(key, {4, 'd'}) + redis.zadd(key, {5, 'e'}) expected_results = [('a', 1.0), ('b', 2.0), ('c', 3.0), ( 'd', 4.0), ('e', 5.0)] results = redis.zrange(key, 0, -1, withscores=True) From 1617458414649728b2ff7f98280710b62055f11e Mon Sep 17 00:00:00 2001 From: Francesco Capponi Date: Tue, 1 Sep 2020 14:19:18 -0700 Subject: [PATCH 2/3] Update sorted_set.py --- stream_framework/storage/redis/structures/sorted_set.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream_framework/storage/redis/structures/sorted_set.py b/stream_framework/storage/redis/structures/sorted_set.py index ac7e5ce6..0d965233 100644 --- a/stream_framework/storage/redis/structures/sorted_set.py +++ b/stream_framework/storage/redis/structures/sorted_set.py @@ -64,7 +64,7 @@ def _add_many(redis, score_value_pairs): for score_value_chunk in score_value_chunks: # redis >3.2 requires a dictionary - result = redis.zadd(key, {k:v for k, v in score_value_chunks}) + result = redis.zadd(key, {k:v for (v, k) in [score_value_chunks]}) logger.debug('adding to %s with score_value_chunk %s', key, score_value_chunk) results.append(result) From b3d3f6dbce7d0c4ec3450afa386a20586e0721a0 Mon Sep 17 00:00:00 2001 From: Francesco Capponi Date: Tue, 1 Sep 2020 14:24:47 -0700 Subject: [PATCH 3/3] Update sorted_set.py --- stream_framework/storage/redis/structures/sorted_set.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream_framework/storage/redis/structures/sorted_set.py b/stream_framework/storage/redis/structures/sorted_set.py index 0d965233..a776fd6e 100644 --- a/stream_framework/storage/redis/structures/sorted_set.py +++ b/stream_framework/storage/redis/structures/sorted_set.py @@ -64,7 +64,7 @@ def _add_many(redis, score_value_pairs): for score_value_chunk in score_value_chunks: # redis >3.2 requires a dictionary - result = redis.zadd(key, {k:v for (v, k) in [score_value_chunks]}) + result = redis.zadd(key, {k:v for (v, k) in [score_value_chunk]}) logger.debug('adding to %s with score_value_chunk %s', key, score_value_chunk) results.append(result)