zoukankan      html  css  js  c++  java
  • Redis sort命令

    http://www.cnblogs.com/linjiqin/archive/2013/06/14/3135921.html

    1.添加 投票选项到 redis的  List 和HashMap

    list    key  ==> tomas:vote:vote_item:%S:list   (PS. %S=voteId)

    value==> {video_hashmap_key

    map  key  ==> tomas:vote:vote_item:%S:hashMap  (PS. %S=voteId)

             value==> {{id=01;name=001,title=0002,投票数=33.....},{.....}}  

    Map<String, String> map = new HashMap<String, String>();
    //Long size = voteService.getCountNewYearVideos(null, voteId);
    map.put("ac", ac);
    map.put("vid", "***");
    map.put("title", content.getTitle());
    map.put("time", content.getSortDate().getTime());
    map.put("conver", content.getTitleImg());
    map.put("up_id", content.getUser().getId());
    map.put("up_name", content.getUsername());
    map.put("up_icon", content.getUser().getUserImg());
    map.put("voteCount", "0");
    //添加视频 也就是投票选项
    Long result = voteService.addVoteItem(null, voteId, map);
    /**
    * 添加视频
    *
    * @param jedis
    * @param voteId 活动id
    * @param params ac : acId vid: vid name:title cover:封面 up:uperName
    * @return int 添加完成视频总数
    */
    @Override
    public Long addVoteItem(Jedis jedis, Integer voteId, Map<String, String> params) {

    String video_list_key = this.getFormatKeyStr(ALL_VIDEO_LIST, voteId);
    String video_hashmap_key = this.getFormatKeyStr(NEW_YEAR_VIDEO_INFO_MAP, voteId, params.get("ac"));
    if (this.isExistInVoteItem(jedis, voteId, params.get("ac"))) {
    return 0L;
    }
    if (StringUtils.isEmpty(params.get("vid"))) {
            jedis.incr(getFormatKeyStr(ALL_VIDEO_LIST_INDEX, voteId));   //自增id
    }
    //添加视频信息到分页list lrange(用) 并且吧map的key当作list的vlaue分页是查询出list
    Long all_size = jedis.lpush(video_list_key, video_hashmap_key);
    //添加视频信息到Hashmap
    jedis.hmset(video_hashmap_key, params);
    //设置key过期时间
    jedis.expire(video_hashmap_key, DEFAULT_COOLDOWN);
    //设置key过期时间
    jedis.expire(video_list_key, DEFAULT_COOLDOWN);
    return all_size;
    }
    /**
    * 获取视频分页视频
    *
    * @param jedis
    * @param voteId 活动id
    * @param userId 用户id
    * @param pageSize 分页大小
    * @param pageNo 第几页
    * @param order 排序字段
    * @param asc 是否升序
    * @return List<Map<String, String>> 视频信息
    */
    public List<Map<String, String>> getShapeShiftVideosPage(Jedis jedis, Integer voteId, String userId, int pageSize,
    int pageNo, String order, boolean asc) {
    String video_list_key = this.getFormatKeyStr(ALL_VIDEO_LIST, voteId);
    List<Map<String, String>> rs = new ArrayList<Map<String, String>>();
    List<String> result = new ArrayList<>();
    System.out.println(getStartIndex(pageNo, pageSize) + "------" + getEndIndex(pageNo, pageSize));
    if (asc) {
    result = jedis.sort(video_list_key, new SortingParams().by("*->" + order).asc().limit(getStartIndex(pageNo, pageSize), pageSize).
    get("*->ac", "*->vid", "*->title", "*->time", "*->conver", "*->up_id", "*->up_name", "*->up_icon", "*->voteCount"));
    } else {
    result = jedis.sort(video_list_key, new SortingParams().by("*->" + order).desc().limit(getStartIndex(pageNo, pageSize), pageSize).
    get("*->ac", "*->vid", "*->title", "*->time", "*->conver", "*->up_id", "*->up_name", "*->up_icon", "*->voteCount"));
    }
    Map<String, String> map = new HashMap<String, String>();
    for (int i = 0; i < result.size(); i = i + 9) {
    if ((i + 1) % 9 == 1) {
    map = new HashMap<String, String>();
    }
    map.put("ac", result.get(i));
    map.put("vid", result.get(i + 1));
    map.put("title", result.get(i + 2));
    map.put("time", result.get(i + 3));
    map.put("conver", result.get(i + 4));
    map.put("up_id", result.get(i + 5));
    map.put("up_name", result.get(i + 6));
    map.put("up_icon", result.get(i + 7));
    map.put("voteCount", result.get(i + 8));
    //检测用户对此item今天是否已经投票
    if (!StringUtils.isEmpty(userId) && isVoteTodayByItem(jedis, voteId, result.get(i), userId)) {
    map.put("isVote", "1");
    } else {
    map.put("isVote", "0");
    }
    rs.add(map);
    }
    //System.out.println(JSON.toJSON(rs));
    return rs;
    }
  • 相关阅读:
    java8新特性→方法和构造函数引用:替代Lambda表达式
    java8新特性→Stream流:用于解决已有集合类库既有的弊端
    java8新特性→函数式接口
    java8新特新→Lambda表达式
    子查询
    Vue之监听数据变化watch、computed、methods
    Vue路由-使用命名视图实现经典布局
    Vue路由-使用children属性实现路由
    Vue之路由传参
    Vue路由之touter-link、router-direct的使用
  • 原文地址:https://www.cnblogs.com/xmanblue/p/5413844.html
Copyright © 2011-2022 走看看