MCPcopy Create free account
hub / github.com/BIT-DataLab/LakeBench / RedisListStorage

Class RedisListStorage

join/LSH/datasketch/storage.py:995–1073  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

993
994
995 class RedisListStorage(OrderedStorage, RedisStorage):
996 def __init__(self, config, name=None):
997 RedisStorage.__init__(self, config, name=name)
998
999 def keys(self):
1000 return self._redis.hkeys(self._name)
1001
1002 def redis_keys(self):
1003 return self._redis.hvals(self._name)
1004
1005 def status(self):
1006 status = self._parse_config(self.config['redis'])
1007 status.update(Storage.status(self))
1008 return status
1009
1010 def get(self, key):
1011 return self._get_items(self._redis, self.redis_key(key))
1012
1013 def getmany(self, *keys):
1014 pipe = self._redis.pipeline()
1015 pipe.multi()
1016 for key in keys:
1017 self._get_items(pipe, self.redis_key(key))
1018 return pipe.execute()
1019
1020 @staticmethod
1021 def _get_items(r, k):
1022 return r.lrange(k, 0, -1)
1023
1024 def remove(self, *keys):
1025 self._redis.hdel(self._name, *keys)
1026 self._redis.delete(*[self.redis_key(key) for key in keys])
1027
1028 def remove_val(self, key, val):
1029 redis_key = self.redis_key(key)
1030 self._redis.lrem(redis_key, val)
1031 if not self._redis.exists(redis_key):
1032 self._redis.hdel(self._name, redis_key)
1033
1034 def insert(self, key, *vals, **kwargs):
1035 # Using buffer=True outside of an `insertion_session`
1036 # could lead to inconsistencies, because those
1037 # insertion will not be processed until the
1038 # buffer is cleared
1039 buffer = kwargs.pop('buffer', False)
1040 if buffer:
1041 self._insert(self._buffer, key, *vals)
1042 else:
1043 self._insert(self._redis, key, *vals)
1044
1045 def _insert(self, r, key, *values):
1046 redis_key = self.redis_key(key)
1047 r.hset(self._name, key, redis_key)
1048 r.rpush(redis_key, *values)
1049
1050 def size(self):
1051 return self._redis.hlen(self._name)
1052

Callers 1

ordered_storageFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected