From 5a9aa8f8479247a60cbac658f7223ff3eb74969f Mon Sep 17 00:00:00 2001 From: Przemyslaw Kaminski Date: Fri, 12 Jun 2015 09:02:14 +0200 Subject: [PATCH] Redis: bulk read for get_list --- solar/solar/interfaces/db/redis_db.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/solar/solar/interfaces/db/redis_db.py b/solar/solar/interfaces/db/redis_db.py index 2d0a869c..c8105b86 100644 --- a/solar/solar/interfaces/db/redis_db.py +++ b/solar/solar/interfaces/db/redis_db.py @@ -51,8 +51,17 @@ class RedisDB(object): def get_list(self, collection=COLLECTIONS.resource): key_glob = self._make_key(collection, '*') - for key in self._r.keys(key_glob): - yield json.loads(self._r.get(key)) + keys = self._r.keys(key_glob) + + with self._r.pipeline() as pipe: + pipe.multi() + + values = [self._r.get(key) for key in keys] + + pipe.execute() + + for value in values: + yield json.loads(value) def clear(self): self._r.flushdb()