| 1074 | |
| 1075 | |
| 1076 | class RedisSetStorage(UnorderedStorage, RedisListStorage): |
| 1077 | def __init__(self, config, name=None): |
| 1078 | RedisListStorage.__init__(self, config, name=name) |
| 1079 | |
| 1080 | @staticmethod |
| 1081 | def _get_items(r, k): |
| 1082 | return r.smembers(k) |
| 1083 | |
| 1084 | def remove_val(self, key, val): |
| 1085 | redis_key = self.redis_key(key) |
| 1086 | self._redis.srem(redis_key, val) |
| 1087 | if not self._redis.exists(redis_key): |
| 1088 | self._redis.hdel(self._name, redis_key) |
| 1089 | |
| 1090 | def _insert(self, r, key, *values): |
| 1091 | redis_key = self.redis_key(key) |
| 1092 | r.hset(self._name, key, redis_key) |
| 1093 | r.sadd(redis_key, *values) |
| 1094 | |
| 1095 | @staticmethod |
| 1096 | def _get_len(r, k): |
| 1097 | return r.scard(k) |
| 1098 | |