Esempio n. 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)
Esempio n. 2
0
 def test_cached_zset(self):
     self._cached_zset()
     self.assertEqual(Redis.get(self.ZSET_KEY), 'empty')
     with self.assertRaises(exceptions.ResponseError):
         Redis.zadd(self.ZSET_KEY, 1, 'dog', 2, 'pig')
         Redis.delete(self.ZSET_KEY)
     self._cached_zset((1, 'dog', 2, 'pig'))
     self.assertListEqual(Redis.zrevrange(self.ZSET_KEY, 0, -1),
                          ['pig', 'dog'])
Esempio n. 3
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)
Esempio n. 4
0
    def get_top_sender_ids(cls, user_id, page=None, pagesize=None):
        key = TOP_SENDER_KEY % (user_id)
        if not Redis.exists(key):
            cls._load_top_sender_ids(user_id)

        start = (page - 1) * pagesize if page else 0
        stop = (start + pagesize - 1) if pagesize else -1
        try:
            uids = Redis.zrevrange(key, start, stop, withscores=True)
        except exceptions.ResponseError:
            uids = []

        return list(uids)
Esempio n. 5
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
Esempio n. 6
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)
Esempio n. 7
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)
Esempio n. 8
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]