Java使用Redis实现分页功能

这篇具有很好参考价值的文章主要介绍了Java使用Redis实现分页功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

指令简介

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]文章来源地址https://www.toymoban.com/news/detail-832843.html

到了这里,关于Java使用Redis实现分页功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务---Redis实用篇-黑马头条项目-优惠卷秒杀功能(使用java阻塞队列对秒杀进行异步优化)

    1.1 秒杀优化-异步秒杀思路 我们来回顾一下下单流程 当用户发起请求,此时会请求nginx,nginx会访问到tomcat,而tomcat中的程序,会进行串行操作,分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是否是一人一单 5、扣减库存 6、创建订单 在这六

    2024年02月05日
    浏览(50)
  • 使用redis实现队列功能

    操作 方法 描述 LPUSH Long lPush(String key, String… values) 将一个或多个值 value 插入到列表 key 的表头,返回插入后列表中value的数量,若key不存在,会创建一个新的列表并执行 LPUSH 操作 RPOPLPUSH String rPopLPush(String source, String destination) 列表 source 中的最后一个元素(尾元素)弹出,并返

    2024年02月09日
    浏览(34)
  • Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用

    java连接上redis java操作redis的常见类型数据存储 redis中的项目应用 1.java连接上redis 2.java操作redis的常见类型数据存储 3.redis中的项目应用 redis一般用在哪? 存储基本不会变化的数据,然后这些数据又被多个地方使用 redix怎么用 用String 将存储的数据转换成json串,进行存储 在

    2024年02月05日
    浏览(48)
  • 【服务器】Java连接redis及使用Java操作redis、使用场景

    在你的项目里面导入redis的pom依赖 连接redis 以下数据类型基本上涵盖了各种常见的数据存储需求,而且 Redis 的数据类型支持多种高级操作,因此特别适用于 快速、可靠、实时 的数据访问场景。 字符串(String) :最基本的数据类型,可以包含 任何数据 ,包括 二进制数据 。

    2024年02月06日
    浏览(55)
  • 前后端分离java开发图形验证码+谷歌开源Kaptcha使用(Springboot+redis实现图形验证码校验)

    注册 - 登录 - 修改密码 一般需要发送验证码,但是容易被攻击恶意调用。 手机短信轰炸机是批量、循环给手机无限发送各种网站的注册验证码短信的方法。 短信一条5分钱,如果被大盗刷大家自己计算邮箱通知不用钱,但被大盗刷,带宽、连接等都被占用,导致无法正常使用

    2024年01月19日
    浏览(54)
  • Redis实战:Redis在Java中的基本使用

    本片将介绍 Redis 在 Java 中的基本使用 1、使用jedis操作redis 1.1、Jedis简介 Jedis 是 Java 语言开发的 Redis 客户端工具包,用于 Java 语言与 Redis 数据进行交互。 Jedis 在 github 官网地址:https://github.com/redis/jedis#readme Jedis 只是对 Redis 命令的封装,掌握 Redis 命令便可轻易上手 Jedis。

    2024年02月10日
    浏览(35)
  • Redis快速入门及在Java中使用Redis

     哈喽~大家好,这篇来看看Redis快速入门及在Java中使用Redis。  🥇个人主页:个人主页​​​​​              🥈 系列专栏:【微服务】        🥉与这篇相关的文章:             SpringCloud Sentinel 使用 SpringCloud Sentinel 使用_程序猿追的博客-CSDN博客 SpringCloud 网关 Gat

    2024年02月04日
    浏览(41)
  • JAVA 实现 Redis 发布订阅

    发布订阅: 消息发布者发布消息 和 消息订阅者接收消息 ,两者之间通过某种媒介联系起来 例如订杂志,当自己订阅了爱格杂志,每个月会发刊一本。到发布的时候派送员将杂志送到自己手上就能看到杂志内容。只有我们订阅了该杂志才会派送给我们 Redis 发布订阅(pub/su

    2024年02月14日
    浏览(37)
  • Java实现Redis延时队列

    “如何实现Redis延时队列”这个面试题应该也是比较常见的,解答如下: 使用sortedset(有序集合) ,拿时间戳作为 score ,消息内容作为key 调用 zadd 来生产消息,消费者用zrangebyscore 指令获取 N 秒之前的数据轮询进行处理。 Java实现Redis延时队列,首先要了解何为延时队列,即

    2024年02月20日
    浏览(42)
  • Redis滚动分页的使用

    关注推送也叫Feed流。通过无限下拉刷新获取新的信息。 Feed流产品常见有两种模式: Timeline: 不做内容筛选,简单的按照内容发布时间排序,常用于好友或关注。例如朋友圈 优点:信息全面,不会有缺失。并且实现也相对简单 缺点:信息噪音较多,用户不一定感兴趣,内容获

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包