def backup_extras(type, ranking, backup_key, count=30): extra_key = backup_key + EXTRA_POSTFIX entityIDs = ranking.get_by_range(0, count) extras = {} for p in Player.batch_load(entityIDs, RANKING_EXTRA_KEYS[type]): if p is None: continue extras[p.entityID] = ranking_extra_encode(p, type) ranking.pool.execute_pipeline( ('del', extra_key), ['hmset', extra_key] + list(convert_dict_to_list(extras)), )
def update(self, *args, **kwargs): dict.update(self, *args, **kwargs) data = {} if args: e = args[0] if hasattr(e, 'items'): data = e else: data = convert_list_to_dict(e) data.update(kwargs) for k, v in data.items(): data[k] = self.encoder(v) values = convert_dict_to_list(data) self.entity.push_command('HMSET', self.store_key, *values) self.touch_handler()
def update_world(worldID, interval, **info): if worldID not in g_worlds: return False wkey = world_key(worldID) expire = time.time() + interval / float(1000) commands = [ ('hmset', wkey) + tuple(convert_dict_to_list(info)), ('hset', 'ALL_WORLDS', worldID, expire), ] settings_pool.execute_pipeline(*commands) # update cache for k, v in info.items(): setattr(g_worlds[worldID], k, v) return True
def update_world(self, worldID, interval, **info): if worldID not in self.worlds: return False wkey = world_key(self.id, worldID) rkey = region_key(self.id) expire = time.time() + interval / float(1000) commands = [ ('hmset', wkey) + tuple(convert_dict_to_list(info)), # ('pexpire', wkey, interval), ('hset', rkey, worldID, expire), ] settings_pool.execute_pipeline(*commands) # update cache for k, v in info.items(): setattr(self.worlds[worldID], k, v) return True
def hmset(self, **kwargs): return self.pool.execute('hmset', self.key, *convert_dict_to_list(kwargs))
def reset_regions(regions): regions = {k: v["name"] for k, v in regions.items()} settings_pool.execute_pipeline( ('del', r_regions.key), ('hmset', r_regions.key) + tuple(convert_dict_to_list(regions)), )