记录一次使用Redis中ZSet和List分页
使用Redis的ZSet和List进行分页,两者都可以实现,共同特性相当于截取集合中的一部分,ZSet拥有去重特性,List可能会出现数据重复情况,推荐使用ZSet。
另外说明:使用其他类型就不可以,比如string,这个返回字符串的长度部分。
值得注意的是:要实现ZSet或者List分页,需要将数据循环,每条数据都需要执行一遍插入redis的操作,key可以一样,相当于在集合后再加一条,如果将结果统一放入redis,分页将以外层size去进行分页。
具体方法如下(存数据):
try {//score为排序方式,可以为id,redis中会将数据安装score进行排序,也可以赋个0double score = Double.parseDouble(item.get("id").toString());
//使用redisTemplate操作redis,key为字符串,数据为JSON字符串redisTemplate.opsForZSet().add(key.toString(),JSON.toJSONString(item), score);} catch (NumberFormatException e) {e.printStackTrace();}
在redis中查看存入数据的数据类型:
取数据时,根据传入的currPage和pageSize条件去查询redis:
String afgFno = object.getString("afgFno");Long currentPage = object.getLong("currentPage");Long pageSize = object.getLong("pageSize");//1 100000代表score的排序氛围值,即从1-100000的范围,也设置限定查询值//1, 100000, (currPage页数-1)*每页显示数量, 每页显示数量);redisData = redisTemplate.opsForZSet().rangeByScore(afgFno.toString(),1, 100000, (currentPage - 1) * pageSize, pageSize);
使用List(存数据):
redisTemplate.opsForList().rightPush(key.toString(),JSON.toJSONString(item),score);
使用List(取数据):
redisTemplate.opsForList().range(afgFno.toString(),(currentPage - 1) * pageSize, pageSize);
ZSet与List返回结果不一样,可以尝试下,根据实际情况去使用。
这样就实现了使用redis的ZSet和List进行分页查询。
记录一次使用Redis中ZSet和List分页相关推荐
- redis ZSet php,redis中zset怎么使用
Redis中zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序.可以理解了有两列的mysql表, ...
- Redis中ZSet的底层数据结构跳跃表skiplist,你真的了解吗?
欢迎大家关注我的微信公众号[老周聊架构],Java后端主流技术栈的原理.源码分析.架构以及各种互联网高并发.高性能.高可用的解决方案. 一.前言 老周写这篇文章的初衷是这样的,之前项目中有大量使用 R ...
- 基于Redis中 Zset数据类型实现各类高性能排行榜日榜、周榜(附上整合SpringBoot示例代码)
目录 为什么要使用redis? 日榜.周榜实现方案介绍 热度增加代码参考 日榜获取 周榜获取 为什么要使用redis? 如果使用mysql 要实现排行榜功能,如果使用 mysql或其它关系型数据库 来 ...
- redis中zset底层实现原理
https://www.cnblogs.com/yuanfang0903/p/12165394.html 阅读目录 一.Zset编码的选择 二.ziplist 三.skiplist 四.skiplis ...
- zset 怎么get_使用redis的zset实现高效分页查询(附完整代码)
一.需求 移动端系统里有用户和文章,文章可设置权限对部分用户开放.现要实现的功能是,用户浏览自己能看的最新文章,并可以上滑分页查看. 二.数据库表设计 涉及到的数据库表有:用户表TbUser.文章表T ...
- redis中Zset数据类型最全常用命令
一.引言 今天晚上不加班,不加班,爽翻.不加班就能安安心心继续学习了,继续redis学习哈.今天学习redis五大数据类型最后一个了.上一章学习了Set无序集合,那么有无序集合肯定就会有有序集合了.Z ...
- zset中的score_读懂才会用 : 带你见识 Redis 的 zset
快餐车 本文从代码角度分析Redis 的 zset 结构,希望通过本文掌握如下内容: Redis 中 zset 不是单一结构完成,是跳表和哈希表共同完成 跳表的实现原理,跳表升维全靠随机 跳表中查找. ...
- 【Redis之ZSet类型的详解ZSet类型中常用命令的实践】
Redis之ZSet类型的详解&ZSet类型中常用命令的实践 知识回顾: 通过对Redis中的String的命令做了充分的讲解以及实践学习 通过对Redis中String类型之Bit命令的详解 ...
- Redis中的zset原理以及用Java实现跳跃表
准备工作 先在Redis官网下载最新的稳定版本6.2.按照官网给出的安装指南到Linux服务器上安装. zadd调用过程 redis/src/server.c 文件中定义了所有命令运行要调用的方法.z ...
最新文章
- 在Ubuntu 14.04 64bit上安装epub阅读器Sigil 0.8.2
- 同样都是调参,为什么人家的神经网络比我牛逼100倍?
- 被swoole坑哭的PHP程序员
- 同步控制 之“重入锁”
- el table怎么获取最后一行_elementUi表格插入额外一行怎么操作
- EasyExcel实现文件读取、导出、上传、下载操作
- python easy install_Python 安装easy_install详解
- 陌生人社会_陌生人之旅
- 机器学习接口和代码之 KNN
- 369寝室(数组、模拟)
- 聊一聊你了解的程序猿是什么样的?
- java正则匹配并提取字串
- android 8.0 iso6,微信8.0.6更新了什么?IOS系统微信8.0.6版本更新详情一览[多图]
- oracle mysql认证考试流程_报考oraclemysql认证的考试流程是哪些
- MCSA / Windows Server 2016各版本的功能及比较,安装需求及选项
- Misra c规则简介
- 苹果电脑系统如何设置成中文
- 2019年,会不会是我这一辈子的人生巅峰?
- Linux之pstree命令
- 三层架构(UI、BLL、DAL)