Ejemplo n.º 1
0
 def wrapper(*args, **kwargs):
     with get_redis_conn().pipeline() as pipe:
         get_thread_local().transaction_pipeline = pipe
         get_thread_local().in_transaction = True
         for i in xrange(MAX_TRANSACTION_RETRIES):
             get_thread_local().queued_writes = collections.defaultdict(list)
             try:
                 ret_value = f(*args, **kwargs)
                 pipe.multi()
                 for queued_write_list in get_thread_local().queued_writes.values():
                     for queued_write in queued_write_list:
                         execute_queued_write(pipe, queued_write)
                 pipe.execute()
                 get_thread_local().in_transaction = False
                 return ret_value
             except WatchError:
                 continue
             except Exception:
                 get_thread_local().in_transaction = False
                 raise
         get_thread_local().in_transaction = False
         raise MaxTransactionRetriesError("Maximum retries done on transaction, bailing out.")
Ejemplo n.º 2
0
def load(base_model):
    model_dict = get_redis_conn().hgetall(base_model.key)
    if not model_dict:
        raise NoSuchKeyError("Key {} does not exist in DB.".format(base_model.key))
    new_dict = {}
    for k, v in base_model.__dict__.iteritems():
        new_dict[k] = v
        if isinstance(v, KeyValueField):
            if v.key_short in model_dict:
                value = json.loads(model_dict[v.key_short])
            else:
                value = new_dict[k].default_value
            new_dict[k].value = value
        elif isinstance(v, RemoteKeyValueField):
            if v.key_short in model_dict:
                remote_key = json.loads(model_dict[v.key_short])
            else:
                remote_key = new_dict[k].default_remote_key
            new_dict[k].remote_key = remote_key
    base_model.__dict__ = new_dict
    for migration in base_model.get_migrations()[base_model.version:]:
        migration(base_model)
    base_model.version = len(base_model.get_migrations())
Ejemplo n.º 3
0
 def ltrim(self, start, end):
     return get_redis_conn().ltrim(self.key, start, end)
Ejemplo n.º 4
0
 def rpop(self):
     return get_redis_conn().rpop(self.key)
Ejemplo n.º 5
0
 def scard(self):
     return get_redis_conn().scard(self.key)
Ejemplo n.º 6
0
def save(base_model):
    value_dict = _get_value_dict(base_model, True, True)
    value_dict['_v'] = len(base_model.get_migrations())
    get_redis_conn().hmset(base_model.key, value_dict)
Ejemplo n.º 7
0
 def __len__(self):
     return get_redis_conn().llen(self.key)
Ejemplo n.º 8
0
 def hlen(self):
     return get_redis_conn().hlen(self.key)
Ejemplo n.º 9
0
 def zcard(self):
     return get_redis_conn().zcard(self.key)
Ejemplo n.º 10
0
 def zadd(self, *args, **kwargs):
     get_redis_conn().zadd(self.key, *args, **kwargs)
Ejemplo n.º 11
0
 def sdiff(self, other_set_key):
     return get_redis_conn().sdiff(self.key, other_set_key)
Ejemplo n.º 12
0
 def sinter(self, other_set_key):
     return get_redis_conn().sinter(self.key, other_set_key)
Ejemplo n.º 13
0
 def sunion(self, other_set_key):
     return get_redis_conn().sunion(self.key, other_set_key)
Ejemplo n.º 14
0
 def srem(self, elem):
     return get_redis_conn().srem(self.key, elem)
Ejemplo n.º 15
0
 def sadd(self, elem):
     return get_redis_conn().sadd(self.key, elem)
Ejemplo n.º 16
0
 def hgetall(self):
     return get_redis_conn().hgetall(self.key)
Ejemplo n.º 17
0
 def hset(self, key, value):
     return get_redis_conn().hset(self.key, key, value)
Ejemplo n.º 18
0
 def zremrangebyscore(self, min, max):
     return get_redis_conn().zremrangebyscore(self.key, min, max)
Ejemplo n.º 19
0
 def hdel(self, *args):
     return get_redis_conn().hdel(self.key, *args)
Ejemplo n.º 20
0
 def lindex(self, idx):
     return get_redis_conn().lindex(self.key, idx)
Ejemplo n.º 21
0
 def sismember(self, elem):
     return get_redis_conn().sismember(self.key, elem)
Ejemplo n.º 22
0
 def rpush(self, *args):
     return get_redis_conn().rpush(self.key, *args)
Ejemplo n.º 23
0
 def lrange(self, start, end):
     return get_redis_conn().lrange(self.key, start, end)
Ejemplo n.º 24
0
 def lpop(self):
     return get_redis_conn().lpop(self.key)
Ejemplo n.º 25
0
def delete(base_model):
    return get_redis_conn().delete(base_model.key)
Ejemplo n.º 26
0
 def smembers(self):
     return get_redis_conn().smembers(self.key)