def search(cls, para): name = para['name'] cli = Redis() uid_list = cli.srandmember('%s:%s'%(cls.NAME_INDEX, name), cls.NAME_SEARCH_NUM) ret = [{'uid':uid, 'name': User(uid).getName(), 'icon': User(uid).getIcon(),'level':User(uid).level} for uid in uid_list] return {'users': ret}
def setName(self, name): old_name = self.name self.name = name uid = self.key_ cli = Redis() cli.srem('%s:%s'%(self.NAME_INDEX, old_name), uid) cli.sadd('%s:%s'%(self.NAME_INDEX, name), uid)
def importFriends(cls, uid, uid_list): friend_num = Redis().scard(cls.gen_frd_key(uid)) if friend_num >= cls.MAX_FRIEND_NUM: return False #truncate for fb import if friend_num + len(uid_list) > cls.MAX_FRIEND_NUM: uid_list = uid_list[:cls.MAX_FRIEND_NUM - friend_num] pipe = Redis().pipeline() for i in uid_list: pipe.sadd(cls.gen_frd_key(uid), i) pipe.sadd(cls.gen_frd_key(i), uid) pipe.execute()
def send(cls, para): from_uid = para['from_uid'] to_uid = para['to_uid'] #TODO # if cls.isSent(from_uid, to_uid): # return Error.GIFT_SENT now = int(time.time()) key = '%s:%s:%s' % (from_uid, to_uid, now) gift_type = random.randint(1, 2) data = { 'from_uid': from_uid, 'time': now, 'gid': key, 'type': gift_type, } item_type = cls.getIndexItemType() item_type(key).setAll(data) user_gift = cls(to_uid) if user_gift.size() < cls.MAX_SIZE: user_gift.addKey(key) cli = Redis() key = cls.genGiftCacheKey(from_uid, to_uid) cli.set(key, 1) cli.expire(key, cls.DAY_SEC) else: Log.error('user_gift full, unable to receive') return {}