返回顶部
首页 > 资讯 > 数据库 >redis怎么做分页
  • 371
分享到

redis怎么做分页

redis 2021-07-12 00:07:31 371人浏览 才女
摘要

每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下: (推荐学习:Redis视频教程){ topicId: 'xxxxxxxx', co

每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下: (推荐学习Redis视频教程

{ topicId: 'xxxxxxxx', comments: [ { username: 'niuniu', createDate: 1447747334791, content: '在Redis中分页', commentId: 'xxxxxxx', reply: [ { content: 'yyyyyy' username: 'niuniu' }, ... ] }, ... ]}

将评论数据从Mysql查询出来组装好存到Redis后,以后每次就可以从Redis获取组装好的评论数据,从上面的数据模型可以看出数据都是key-value型数据,无疑要采用hash进行存储,但是每次拿取评论数据时需要分页而且还要按createDate字段进行排序,hash肯定是不能做到分页和排序的。

那么,就挨个看一下Redis所支持的数据类型:

String: 主要用于存储字符串,显然不支持分页和排序。

Hash: 主要用于存储key-value型数据,评论模型中全是key-value型数据,所以在这里Hash无疑会用到。

List: 主要用于存储一个列表,列表中的每一个元素按元素的插入时的顺序进行保存,如果我们将评论模型按createDate排好序后再插入List中,似乎就能做到排序了,而且再利用List中的LRANGE key start stop指令还能做到分页。

嗯,到这里List似乎满足了我们分页和排序的要求,但是评论还会被删除,就需要更新Redis中的数据,如果每次删除评论后都将Redis中的数据全部重新写入一次,显然不够优雅,效率也会大打折扣,如果能删除指定的数据无疑会更好,而List中涉及到删除数据的就只有LPOP和RPOP这两条指令,但LPOP和RPOP只能删除列表头和列表尾的数据,不能删除指定位置的数据,(备注:其实还有 LREM命令可以做到删除,但是非常不方便),而且当存在接口高并发访问时,这个list可能会无限延长,且里面的数据会存在很多重复,这就会影响到正常的业务,所以List也不太适合。

Set: 主要存储无序集合,无序!排除。

SortedSet: 主要存储有序集合,SortedSet的添加元素指令ZADD key score member [[score,member]…]会给每个添加的元素member绑定一个用于排序的值score,SortedSet就会根据score值的大小对元素进行排序,在这里就可以将createDate当作score用于排序。

SortedSet中的指令ZREVRANGE key start stop又可以返回指定区间内的成员,可以用来做分页,SortedSet的指令ZREM key member可以根据key移除指定的成员,能满足删评论的要求,所以,SortedSet在这里是最适合的(时间复杂度O(log(N)))。

所以,需要用到的数据类型有SortSet和Hash,SortSet用于做分页排序,Hash用于存储具体的键值对数据。SortSet结构中将每个主题的topicId作为set的key,将与该主题关联的评论的createDate和commentId分别作为set的score和member,commentId的顺序就根据createDate的大小进行排列。

当需要查询某个主题某一页的评论时,就可主题的topicId通过指令zrevrange topicId (page-1)×10 (page-1)×10+perPage这样就能找出某个主题下某一页的按时间排好顺序的所有评论的commintId。page为查询第几页的页码,perPage为每页显示的条数。

当找到所有评论的commentId后,就可以把这些commentId作为key去Hash结构中去查询该条评论对应的内容。

这样就利用SortSet和Hash两种结构在Redis中达到了分页和排序的目的。

当然,也可以直接只使用SrotedSet类型,而不使用Hash类型,直接将评论存放在member中。

但为什么要将评论和排序放到不同的类型里?其中的好处是,可以对评论设置不同的排序类型,比如按时间的正反序,点赞的正反序,查看次数的正反序等。而这样只需要维护不同的SrotedSet排序,不需要维护多套评论的内容了。

您可能感兴趣的文档:

--结束END--

本文标题: redis怎么做分页

本文链接: https://lsjlt.com/news/2470.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • redis怎么做分页
    每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下: (推荐学习:Redis视频教程){ topicId: 'xxxxxxxx', co...
    99+
    2021-07-12
    redis
  • html分页怎么做
    html 分页功能通过划分内容、创建链接和设置导航链接来将网页内容分解成多个页面,提高用户体验和加载速度,具体步骤包括: 1. 划分内容; 2. 为每个部分创建指向单独页面的链接; 3....
    99+
    2024-05-16
  • redis怎么存储分页数据
    在Redis中存储分页数据可以使用有序集合(Sorted Set)或者列表(List)来实现。1. 使用有序集合可以将每一页的数据作...
    99+
    2023-09-01
    redis
  • redis分片式集群是怎么做的
    redis分片式集群的实现方法:准备6台Linux服务器,在每台服务器上安装redis服务。安装好之后,修改每台服务器的配置文件redis.conf,修改如下几项:#端口分别设置为10000~10005port 10000#开启cluste...
    99+
    2024-04-02
  • redis怎么做集群
    Redis Sharding集群Redis 3正式推出了官方集群技术,解决了多Redis实例协同服务问题。Redis Cluster可以说是服务端Sharding分片技术的体现,即将键值按照一定算法合理分配到各个实例分片上,同时各个实例节点...
    99+
    2014-06-28
    redis
  • html做网页导航怎么做
    步骤:1、创建HTML文档结构;2、添加导航栏容器;3、创建导航链接;4、导航栏添加样式;5、完善导航栏等等。HTML是一种标记语言,用于创建网页的结构和内容。要使用HTML创建网页导航,需要以下步骤:创建HTML文档结构:在文档的头部使用...
    99+
    2023-11-02
    html 网页导航
  • thinkphp如何做分页
    本文小编为大家详细介绍“thinkphp如何做分页”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp如何做分页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、控制器中的代码实现在控制器方法中,我们...
    99+
    2023-07-06
  • html怎么做网页
    作为Web开发的入门基础,HTML是非常关键的。本文将介绍HTML的基础知识,并提供一些创建网页的基本步骤和技巧。一、HTML的基础知识HTML全称Hyper Text Markup Language,是一种用于描述网页结构的标记语言。HT...
    99+
    2023-05-14
  • html网页怎么做
    制作 html 网页涉及三个关键步骤:使用文本编辑器编写 html 代码(标记语言,用于定义网页的结构和内容)。在 标签内添加网页内容(包括文本、图像、链接和表单等元素)。保存文件为...
    99+
    2024-04-05
    css sublime
  • html首页怎么做
    如何制作 html 首页?步骤如下:创建 html 文件(index.html)添加 html 结构定义页面内容(标题、导航、正文、页脚)设置样式(通过 css)测试页面 如何制作 H...
    99+
    2024-05-21
    css
  • 云服务器做网页怎么做
    云服务器(Cloud Distributed Server)是一种用于存储和共享文件和数据的计算机操作系统,可以用于搭建基于互联网的在线服务和虚拟现实应用程序等。在云服务器上,用户可以将自己的资源上传到服务器上,以便其他人访问和使用这些资源...
    99+
    2023-10-26
    怎么做 服务器 网页
  • html子网页怎么做
    通过 5 个步骤创建 html 子网页:创建主网页。创建子网页 html 文档。在主网页中创建链接。将子网页复制到网站目录。测试链接。 如何创建 HTML 子网页 HTML 子网页是主...
    99+
    2024-05-16
    sublime 子网
  • 云服务器做网页怎么做的
    云服务器(Cloud Distributed Server,简称 CDN)是一种提供快速、可靠、多节点的网络存储和访问技术的服务。它使用虚拟化技术和负载均衡技术,为网站提供高可用性和快速、稳定的网络访问。 以下是在云服务器上创建网页的步骤...
    99+
    2023-10-26
    怎么做 服务器 网页
  • 用redis怎么做tag系统
    用redis做tag系统的示例:例如:用户ltebean要给nodejs加一个标签amazing。代码:sadd user:ltebean:tag:amazing nodejs sadd user:ltebean:item:nodejs a...
    99+
    2024-04-02
  • 怎么用ES做Redis监控
    本篇内容主要讲解“怎么用ES做Redis监控”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用ES做Redis监控”吧!序言图示:Redis热度排名Redis当下很流行,也很好用,无论是在业务...
    99+
    2023-06-17
  • redis怎么做缓存机制
    Redis是一个开源的、高性能的键值数据库,它可以用作缓存机制来提高系统的访问速度。以下是使用Redis作为缓存机制的一些步骤:1....
    99+
    2023-09-06
    redis
  • redis集群方案怎么做
    redis 集群方案主要有哨兵模式(高可用、故障自动转移)和 redis proxy 模式(高性能、高扩展性)。 Redis 集群方案 开门见山:Redis 集群方案主要有哨兵和 Re...
    99+
    2024-05-21
    redis
  • redis怎么做消息队列
    redis 消息队列 Redis 是一个内存数据库,兼具消息代理的功能,可以用来构建高效的消息队列系统。 如何使用 Redis 构建消息队列 要使用 Redis 构建消息队列,需要执行以...
    99+
    2024-05-21
    python redis 数据丢失 持久化存储
  • 云服务器做网页怎么做的啊
    云服务器(Cloud Distributed Server,简称CDN)是一种提供高可用性和高弹性伸缩能力的云计算技术,它通过网络分发网络内容,提高网站访问速度和降低网站宕机风险。以下是如何使用云服务器来做网页的步骤: 下载所需的云服务...
    99+
    2023-10-27
    怎么做 服务器 网页
  • 怎么在vps上做网页
    要在VPS上创建和托管网页,您需要完成以下步骤:1. 选择和购买合适的VPS计划:根据您的需求选择一个可靠的VPS提供商,并按照您的...
    99+
    2023-09-14
    vps
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作