当前位置: 首页 > news >正文

Java使用Redis实现分页功能

分页功能实现应该是比较常见的,对于redis来说,近期刷题就发现了lrange、zrange这些指令,这个指令怎么使用呢?
我们接下来就来讲解下。

目录

  • 指令简介
    • lrange
    • zrange
  • Java实现Redis实现分页功能

指令简介

lrange

lrange 是 Redis 中的一个命令,用于从列表中获取指定范围内的元素。
语法:lrange key start end
start 和 end是两个整数,表示要从列表中获取元素的起始和结束位置。索引从0开始,所以start和end都应该大于等于0。如果start大于end,交换它们的位置。
lrange 命令将返回一个列表,其中包含从start到end(不包括)位置的元素。
示例:lrange my_list 0 4

zrange

zrange是用于从有序集合中排序查询(升序)指定范围内的元素。(zrevrange是降序,语法同理)
语法:ZRANGE key start stop [WITHSCORES] (WITHSCORES显示分数)
示例:ZRANGE myzset 0 -1 WITHSCORES(显示全部) 或 ZRANGE myzset 0 2 (显示下标区间0-2)

Java实现Redis实现分页功能

import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;public class RedisPagination {private Jedis jedis;public RedisPagination(Jedis jedis) {this.jedis = jedis;}/*** 获取指定页码的列表* @param pageNo 页码* @param pageSize 每页大小* @return*/public List<String> getPageList(String listKey,int pageNo,int pageSize){// 计算起始和结束索引int start = (pageNo - 1) * pageSize;int end = start + pageSize - 1;//存储结果List<String> result = new ArrayList<>();// 使用lrange获取分页数据long totalItems = jedis.llen(listKey); // 获取总条目数System.out.println("总条目数: " + totalItems);if (totalItems > 0) {// 确保结束索引不超过总条目数end = Math.min(end, (int) (totalItems - 1));// 使用lrange进行分页result = jedis.lrange(listKey, start, end);}return result;}/*** 获取指定页码的有序集合* @param pageNo 页码* @param pageSize 每页大小* @return*/public Set<String> getPageSet(String setKey,int pageNo,int pageSize){// 计算起始和结束索引int start = (pageNo - 1) * pageSize;int end = start + pageSize - 1;//存储结果Set<String> result = new HashSet<>();// 使用zrange获取分页数据long totalItems = jedis.zcard(setKey); // 获取总条目数System.out.println("总条目数: " + totalItems);if (totalItems > 0) {// 确保结束索引不超过总条目数end = Math.min(end, (int) (totalItems - 1));// 使用lrange进行分页result = jedis.zrange(setKey, start, end);}return result;}public static void main(String[] args) {Jedis jedis = new Jedis("localhost",6379);RedisPagination pagination = new RedisPagination(jedis);System.out.println("列表分页结果:"+pagination.getPageList("my_list",1,5));System.out.println("集合分页结果:"+pagination.getPageSet("myzset",1,5));jedis.close();}
}

测试结果:

总条目数: 7
列表分页结果:[task1, task2, task3, test1, test2]
总条目数: 4
集合分页结果:[baidu.com, google.com, 360.com, google.com1]

相关文章:

  • 微服务中4种应对跨库Join的思路
  • 如何选择最适合的图纸加密软件?用户体验及性价比
  • 同一台宿主机上虚拟机CPU资源分配方式介绍
  • 【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
  • 剑指offer面试题16 反转链表
  • 【栈】150. 逆波兰表达式求值
  • 面向对象编程入门:掌握C++类的基础(1/3)
  • MCU中断控制
  • CSRNET图像修复,DNN
  • http协议与apache
  • STM32_ESP8266 连接阿里云 操作图解
  • CSS中伪元素和伪类的区别和作用?
  • Vue3实现带动画效果的tab栏切换
  • Elasticsearch:创建自定义 ES Rally tracks 的分步指南
  • C++结合Lambda表达式在函数内部实现递归
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • chrome扩展demo1-小时钟
  • EventListener原理
  • Git的一些常用操作
  • Hexo+码云+git快速搭建免费的静态Blog
  • IDEA常用插件整理
  • IOS评论框不贴底(ios12新bug)
  • JavaScript对象详解
  • Java多线程(4):使用线程池执行定时任务
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Magento 1.x 中文订单打印乱码
  • mysql innodb 索引使用指南
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Service Worker
  • tweak 支持第三方库
  • Xmanager 远程桌面 CentOS 7
  • 彻底搞懂浏览器Event-loop
  • 入门到放弃node系列之Hello Word篇
  • scrapy中间件源码分析及常用中间件大全
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​力扣解法汇总946-验证栈序列
  • $$$$GB2312-80区位编码表$$$$
  • (day 12)JavaScript学习笔记(数组3)
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)Hibernate的二级缓存
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (译)2019年前端性能优化清单 — 下篇
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)