【Redis】redis分页查询理解
偶然在代码中发现一个接口,接口定义说是分页查询,但逻辑实现是Redis。不太理解,Redis怎么分页?后来看到一篇文章,然后了解了。
1、Zrevrange实现
通过SortedSet的zrevrange topicId (page-1)×10 (page-1)×10+perPage指令可以实现分页功能。
Redis Zrevrange 命令 - 返回有序集中指定区间内的成员,通过索引,分数从高到底。
参考:Redis Zrevrange 命令_返回有序集中指定区间内的成员,通过索引,分数从高到底
详细了解见原文:在 Redis 中进行分页排序查询 | NiuNiu's Note
注:Zrevrange 命令后面的命令值就是索引值。所以不会有问题。
思考:可能会有一个小问题。如果在分页查询过程中,有新数据插入。那么已有数据的索引值会改变,这样就会查到重复数据或者遗失数据了。
而Zrevrangebyscore,如果将数据插入时间点作为score,那么通过score来划分范围,肯定不会出现数据重复或丢失的情况。
2、Zrevrangebyscore命令实现
另外,我们的代码中使用的是Zrevrangebyscore命令。
这个命令应该只保证每页范围一致,做到不遗漏数据,但不保证每页数据总数一定。
一般不适用于传统每页多少条数据的分页方式,比较适合于瀑布流或者评论那种动态加载数据的方式。
注:Zrevrangebyscore 命令后面的命令值就是分数值。所以有数据总数不一致情况。
3、参考:
- 在 Redis 中进行分页排序查询 | NiuNiu's blog
http://liu-xin.me/2015/11/17/%E5%9C%A8Redis%E4%B8%AD%E8%BF%9B%E8%A1%8C%E5%88%86%E9%A1%B5%E6%8E%92%E5%BA%8F%E6%9F%A5%E8%AF%A2/
【Redis】redis分页查询理解的更多相关文章
- 分页查询和redis
问题 我在做论坛的是时候遇到了如下的问题.论坛里可以有很多的主题topic,每个topic对应到很多回复reply.现在要查询某个topic下按照replyTime升序排列的第pageNo页的repl ...
- hbase+springboot+redis实现分页
实现原理: 1.读取hbase数据每页的数据时多取一条数据.如:分页是10条一页,第一次查询hbase时, 取10+1条数据,然后把第一条和最后一条rowkey数据保存在redis中,redis中的k ...
- redis实现分页
redis实现分页功能,主要是将数据缓存起来,无需频繁查询数据库,减少数据库的压力. 适用场景:单用户操作列表界面分页,如博客列表. 缺点:不可模糊查询,缺少灵活性. 封装类: class XgRed ...
- [redis]redis实现分页的方法
每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下:{ topicId: 'xxxxxxxx', comments: ...
- 为什么 Redis 的查询很快, Redis 如何保证查询的高效
Redis 如何保证高效的查询效率 为什么 Redis 比较快 Redis 中的数据结构 1.简单动态字符串 SDS 对比 c 字符串的优势 SDS可以常数级别获取字符串的长度 杜绝缓冲区溢出 减少修 ...
- 浅谈Redis之慢查询日志
首先我们需要知道redis的慢查询日志有什么用?日常在使用redis的时候为什么要用慢查询日志? 第一个问题: 慢查询日志是为了记录执行时间超过给定时长的redis命令请求 第二个问题: 让使用者更好 ...
- redis缓存分页思路
传统分页一般分页做缓存都是直接查找出来,按页放到缓存里,但是这种缓存方式有很多缺点.如缓存不能及时更新,一旦数据有变化,所有的之前的分页缓存都失效了.比如像微博这样的场景,微博下面现在有一个顶次数的排 ...
- redis设置慢查询日志
Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度. 1.redis生命周期 慢查询发生在第3阶段 2.两个配置 2.1.slow ...
- 在nodejs使用Redis缓存和查询数据及Session持久化(Express)
在nodejs使用Redis缓存和查询数据及Session持久化(Express) https://segmentfault.com/a/1190000002488971
随机推荐
- 开源框架AsyncHttpClient使用
开源框架AsyncHttpClient使用 2013-10-14 15:16:35 分类: Android平台 在大神岩岩的推荐下使用了AsyncHttpClient框架,用过之后感觉还是灰常好用滴. ...
- linux任务计划cron
linux任务计划cron 1.crontab命令任务计划配置文件 [root@bogon ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/ ...
- OSI7层网络模型
物理层在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层.物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输.物理层的作用 ...
- redis windows 下安装及使用
1.下载redis https://github.com/MSOpenTech/redis 2.解压下载的文档,比如D:\devSoft\redis-2.8.19 redis-benchmark.ex ...
- [容器]docker创建镜像
手动创建: docker run -d -p mynginx:v2 nginx rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest- ...
- zooKeeper_《ZooKeeper官方指南》一致性保障
转 http://ifeve.com/zookeeper-consistency-guarantees/ 本文翻译自<ZooKeeper官方指南>,译者:追云,校对:追云 一致性保障 Zo ...
- 安装好Oracle和PLSQLDeveloper后,PLSQLDeveloper登录时没有可选数据库和连接为问题
1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...
- VMware虚拟机实用经验总结十一条
转:http://article.pchome.net/content-948404.html 1.VMware虚拟机实用经验之支持的Guest OS: VMWare支持如下Guest OS:MS-D ...
- android studio 中配置androidAnnotation 的新版正确配置
apply ].processResources.manifestFile resourcePackageName 'com.peiandsky.firstandroidstudio' }}
- tp三级联动
<script type="text/javascript">$(document).ready(function(){ $("#province" ...
- 在 Redis 中进行分页排序查询 | NiuNiu's blog
http://liu-xin.me/2015/11/17/%E5%9C%A8Redis%E4%B8%AD%E8%BF%9B%E8%A1%8C%E5%88%86%E9%A1%B5%E6%8E%92%E5%BA%8F%E6%9F%A5%E8%AF%A2/
问题 我在做论坛的是时候遇到了如下的问题.论坛里可以有很多的主题topic,每个topic对应到很多回复reply.现在要查询某个topic下按照replyTime升序排列的第pageNo页的repl ...
实现原理: 1.读取hbase数据每页的数据时多取一条数据.如:分页是10条一页,第一次查询hbase时, 取10+1条数据,然后把第一条和最后一条rowkey数据保存在redis中,redis中的k ...
redis实现分页功能,主要是将数据缓存起来,无需频繁查询数据库,减少数据库的压力. 适用场景:单用户操作列表界面分页,如博客列表. 缺点:不可模糊查询,缺少灵活性. 封装类: class XgRed ...
每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下:{ topicId: 'xxxxxxxx', comments: ...
Redis 如何保证高效的查询效率 为什么 Redis 比较快 Redis 中的数据结构 1.简单动态字符串 SDS 对比 c 字符串的优势 SDS可以常数级别获取字符串的长度 杜绝缓冲区溢出 减少修 ...
首先我们需要知道redis的慢查询日志有什么用?日常在使用redis的时候为什么要用慢查询日志? 第一个问题: 慢查询日志是为了记录执行时间超过给定时长的redis命令请求 第二个问题: 让使用者更好 ...
传统分页一般分页做缓存都是直接查找出来,按页放到缓存里,但是这种缓存方式有很多缺点.如缓存不能及时更新,一旦数据有变化,所有的之前的分页缓存都失效了.比如像微博这样的场景,微博下面现在有一个顶次数的排 ...
Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度. 1.redis生命周期 慢查询发生在第3阶段 2.两个配置 2.1.slow ...
在nodejs使用Redis缓存和查询数据及Session持久化(Express) https://segmentfault.com/a/1190000002488971
开源框架AsyncHttpClient使用 2013-10-14 15:16:35 分类: Android平台 在大神岩岩的推荐下使用了AsyncHttpClient框架,用过之后感觉还是灰常好用滴. ...
linux任务计划cron 1.crontab命令任务计划配置文件 [root@bogon ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/ ...
物理层在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层.物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输.物理层的作用 ...
1.下载redis https://github.com/MSOpenTech/redis 2.解压下载的文档,比如D:\devSoft\redis-2.8.19 redis-benchmark.ex ...
手动创建: docker run -d -p mynginx:v2 nginx rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest- ...
转 http://ifeve.com/zookeeper-consistency-guarantees/ 本文翻译自<ZooKeeper官方指南>,译者:追云,校对:追云 一致性保障 Zo ...
1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...
转:http://article.pchome.net/content-948404.html 1.VMware虚拟机实用经验之支持的Guest OS: VMWare支持如下Guest OS:MS-D ...
apply ].processResources.manifestFile resourcePackageName 'com.peiandsky.firstandroidstudio' }}
<script type="text/javascript">$(document).ready(function(){ $("#province" ...