Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 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
Пример #4
0
    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
Пример #5
0
 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)
Пример #6
0
 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)
Пример #7
0
    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]
Пример #8
0
    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
Пример #9
0
 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)