def user_sub_obj_ids(cls, uid, page, pagesize, maxs): skey = UserSubShow.SUB_SHOW_IDS % {'uid': uid} gkey = UserSubGame.SUB_GAME_IDS % {'uid': uid} key = cls.USER_SUB_IDS % {'uid': uid} if not Redis.exists(skey): UserSubShow._load_sub_show_ids(uid) if not Redis.exists(gkey): UserSubGame._load_sub_game_ids(uid) # 始终合并以保证实时性 Redis.delete(key) all_keys = list() for k in [skey, gkey]: try: count = Redis.zcard(k) except exceptions.ResponseError: count = 0 count and all_keys.append(k) all_keys and Redis.zunionstore(key, all_keys) try: if maxs: ids = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize, withscores=True) else: start = (page - 1) * pagesize stop = start + pagesize - 1 ids = Redis.zrevrange(key, start, stop, withscores=True) except exceptions.ResponseError: ids = [] return list(ids)
def latest_video_ids(cls, aid, pagesize=None, maxs=None): key = cls.LATEST_VIDEO_IDS % ({'aid': aid}) if not Redis.exists(key): cls._load_latest_video_ids(aid) try: avideo_ids = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) except exceptions.ResponseError: avideo_ids = [] return list(avideo_ids)
def latest_uids(cls, aid, end_at, page=None, pagesize=None, maxs=None): key = cls.NEW_MASTERS % ({'aid': aid}) if not Redis.exists(key): cls._load_latest_uids(aid, end_at) try: if maxs: ids = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) else: start = (page - 1) * pagesize stop = start + pagesize - 1 ids = Redis.zrevrange(key, start, stop) except exceptions.ResponseError: ids = [] return ids
def get_live_new_user(cls, aid, pagesize, maxs=None): key = cls.LIVE_NEW_USER % ({'aid': aid}) if not Redis.exists(key): cls._load_get_live_new_users(aid) try: users = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) except exceptions.ResponseError: users = [] return users
def user_game_video_ids(cls, uid, gid, page=None, pagesize=None, maxs=None): key = cls.USER_GAME_VIDEO_IDS % ({'uid': uid, 'gid': gid}) if not Redis.exists(key): cls._load_user_game_video_ids(uid, gid) try: if maxs: ids = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) else: start = (page - 1) * pagesize stop = start + pagesize - 1 ids = Redis.zrevrange(key, start, stop) except exceptions.ResponseError: ids = [] return list(ids)
def activity_comment_ids(cls, activity_id, page=None, pagesize=None, maxs=None): """获取活动相关评论的id """ key = cls.ACTIVITY_COMMENT_IDS % ({'aid': activity_id}) if not Redis.exists(key): cls._load_activity_comment_ids(activity_id) try: if maxs: ids = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) else: start = (page - 1) * pagesize stop = start + pagesize - 1 ids = Redis.zrevrange(key, start, stop) except exceptions.ResponseError: # 列表为空时key对应的value是一个string ids = [] return list(ids)
def get_video_gifts(cls, video_id, maxs=None, pagesize=None): key = VIDEO_GIFT_KEY % (video_id) if not Redis.exists(key): cls._load_video_gifts(video_id) try: # 不进行分页 if pagesize is None and maxs is None: return Redis.zrevrange(key, 0, -1) gifts = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) except exceptions.ResponseError: gifts = [] return [cjson.loads(gf) for gf in gifts]
def get_live_hot_user(cls, aid, pagesize, begin_at, end_at, maxs=None): key = cls.LIVE_HOT_USER % ({'aid': aid}) Redis.delete(key) cls._load_get_live_hot_users(aid, begin_at, end_at) try: user_scores = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize, withscores=True) user_scores = [(us[0], us[1], cls.get_live_user_top(aid, us[0], begin_at, end_at)) for us in user_scores] except exceptions.ResponseError: user_scores = [] return user_scores
def pop_game_ids(cls, uid, page=None, pagesize=None, maxs=None): key = cls.POP_GAME_IDS % ({'uid': uid}) if not Redis.exists(key): cls._load_pop_game_ids(uid) try: # 不进行分页 if page is None and pagesize is None and maxs is None: return Redis.zrevrange(key, 0, -1) if maxs: ids = Redis.zrevrangebyscore(key, '(%.6f' % (maxs), '-inf', start=0, num=pagesize) else: start = (page - 1) * pagesize stop = start + pagesize - 1 ids = Redis.zrevrange(key, start, stop) except exceptions.ResponseError: ids = [] return list(ids)