Exemple #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.")
Exemple #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())
 def ltrim(self, start, end):
     return get_redis_conn().ltrim(self.key, start, end)
 def rpop(self):
     return get_redis_conn().rpop(self.key)
 def scard(self):
     return get_redis_conn().scard(self.key)
Exemple #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)
 def __len__(self):
     return get_redis_conn().llen(self.key)
 def hlen(self):
     return get_redis_conn().hlen(self.key)
 def zcard(self):
     return get_redis_conn().zcard(self.key)
Exemple #10
0
 def zadd(self, *args, **kwargs):
     get_redis_conn().zadd(self.key, *args, **kwargs)
Exemple #11
0
 def sdiff(self, other_set_key):
     return get_redis_conn().sdiff(self.key, other_set_key)
Exemple #12
0
 def sinter(self, other_set_key):
     return get_redis_conn().sinter(self.key, other_set_key)
Exemple #13
0
 def sunion(self, other_set_key):
     return get_redis_conn().sunion(self.key, other_set_key)
Exemple #14
0
 def srem(self, elem):
     return get_redis_conn().srem(self.key, elem)
Exemple #15
0
 def sadd(self, elem):
     return get_redis_conn().sadd(self.key, elem)
Exemple #16
0
 def hgetall(self):
     return get_redis_conn().hgetall(self.key)
Exemple #17
0
 def hset(self, key, value):
     return get_redis_conn().hset(self.key, key, value)
Exemple #18
0
 def zremrangebyscore(self, min, max):
     return get_redis_conn().zremrangebyscore(self.key, min, max)
Exemple #19
0
 def hdel(self, *args):
     return get_redis_conn().hdel(self.key, *args)
Exemple #20
0
 def lindex(self, idx):
     return get_redis_conn().lindex(self.key, idx)
Exemple #21
0
 def sismember(self, elem):
     return get_redis_conn().sismember(self.key, elem)
Exemple #22
0
 def rpush(self, *args):
     return get_redis_conn().rpush(self.key, *args)
Exemple #23
0
 def lrange(self, start, end):
     return get_redis_conn().lrange(self.key, start, end)
Exemple #24
0
 def lpop(self):
     return get_redis_conn().lpop(self.key)
Exemple #25
0
def delete(base_model):
    return get_redis_conn().delete(base_model.key)
Exemple #26
0
 def smembers(self):
     return get_redis_conn().smembers(self.key)