REDIS(11) redis做分页

43 篇文章 0 订阅
27 篇文章 0 订阅

之前的数据都加载到了本地java的Map,分页如下

@RequestMapping("/articles")
	String articles(Model model, HttpServletRequest req, HttpServletResponse rsp, @RequestParam Optional<Integer> type_id, @RequestParam Optional<Integer> page_no) {
		//文章类型
		Predicate<Article> typeFilter = type_id.orElse(0)==0?(a)->true: (a)->a.getType_id() == type_id.get();
		
		Collection<Article> articles = ArticleManager.inst().getArticles().values();
		//分页
		int sum = (int) articles.stream().filter(typeFilter).count();
		int pages_num = (int) Math.ceil((double)sum/(double)PAGE_SIZE);// magic num
		int skip_num = page_no.orElse(0) * PAGE_SIZE;
		
		
	    List<Article> list = articles.stream()
	    		.filter(typeFilter)
	    		.sorted(Comparator.comparing(Article::getId).reversed())
	    		.skip(skip_num)
	    		.limit(PAGE_SIZE)
	    		.map(ArticleManager::initArticle)
	    		.collect(Collectors.toList());

	        model.addAttribute("type_list", ArticleManager.inst().getArticleTypes().values());
		model.addAttribute("sum", sum);//总文章数
		model.addAttribute("pages_num", pages_num);//总页数
		model.addAttribute("page_no", page_no.orElse(0));//第几页
		model.addAttribute("page_size", PAGE_SIZE);//每页大小
		model.addAttribute("list", list);
		model.addAttribute("type_id", type_id.orElse(0));
		
		//页码
		List<Integer> page_nos = new ArrayList<Integer>();
		for(int i=0; i< pages_num; i++){
			page_nos.add(i);
		}
		model.addAttribute("page_nos", page_nos);
		return "articles";
	}


如果对redis的数据分页浏览,思路是是用redis的sort set

比如这是积分商城排行榜的分页

后端:

//分页
		int _page_size = page_size.orElse(100);//每页大小
		int _page_no = page_no.orElse(0);
		int sum = ShopManager.inst().getScoreSetSize(shop_sn).intValue();//信息总条数
		int pages_num = (int) Math.ceil((double)sum/(double)_page_size);//页数
		int start = _page_no * _page_size;
		int end = start + _page_size -1;//下标
		List<DataVO> result = ShopManager.inst().rankList(shop_sn, start, end);
		
		List<Integer> page_nos = new ArrayList<Integer>();
		for(int i=0; i< pages_num; i++){
			page_nos.add(i);
		}
		model.addAttribute("page_nos", page_nos);
		model.addAttribute("sum", sum);//总文章数
		model.addAttribute("uri", "/mg/shop_debug_simple/"+shop_sn);
		model.addAttribute("pages_num", pages_num);//总页数
		model.addAttribute("page_no", page_no.orElse(0));//第几页
		model.addAttribute("page_size", _page_size);//每页大小
		//分页end

前端:

	<div class="col-md-12 column">
            <ul class="pagination pagination-sm">
                <li>
                    <a th:if= "${(page_no-1)>=0}" th:href="${uri+'?page_no='+(page_no-1)+'&page_size='+page_size}">上一页</a>
                </li>
                <li th:each="no: ${page_nos}">
                    <a th:href="${uri+'?page_no='+no+'&page_size='+page_size}" th:text="${(no+1)+' '}" th:style="${page_no==no}?'background-color:blue'" ></a>
                </li>
                <li>
                   <a th:if= "${(page_no+1)<pages_num}" th:href="${uri+'?page_no='+(page_no+1)+'&page_size='+page_size}">下一页</a>
                </li>
            </ul>
        </div>


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值