我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis怎么做分页

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redis怎么做分页

每个主题下的用户的评论组装好写入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排序,不需要维护多套评论的内容了。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis怎么做分页

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis怎么做分页

每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下: (推荐学习:Redis视频教程){ topicId: 'xxxxxxxx', comments: [
redis怎么做分页
2021-07-12

html分页怎么做

html 分页功能通过划分内容、创建链接和设置导航链接来将网页内容分解成多个页面,提高用户体验和加载速度,具体步骤包括: 1. 划分内容; 2. 为每个部分创建指向单独页面的链接; 3. 在每个页面中设置指向其他页面的导航链接。HTML 分
html分页怎么做
2024-05-16

redis怎么存储分页数据

在Redis中存储分页数据可以使用有序集合(Sorted Set)或者列表(List)来实现。1. 使用有序集合可以将每一页的数据作为有序集合的一个成员存储,成员的分值可以按照页数来设置,这样可以确保按照分值排序后的成员就是分页数据。可以使
2023-09-01

redis怎么做集群

Redis Sharding集群Redis 3正式推出了官方集群技术,解决了多Redis实例协同服务问题。Redis Cluster可以说是服务端Sharding分片技术的体现,即将键值按照一定算法合理分配到各个实例分片上,同时各个实例节点协调沟通,共同对外承
redis怎么做集群
2014-06-28

html做网页导航怎么做

步骤:1、创建HTML文档结构;2、添加导航栏容器;3、创建导航链接;4、导航栏添加样式;5、完善导航栏等等。HTML是一种标记语言,用于创建网页的结构和内容。要使用HTML创建网页导航,需要以下步骤:创建HTML文档结构:在文档的头部使用
html做网页导航怎么做
2023-11-02

html首页怎么做

如何制作 html 首页?步骤如下:创建 html 文件(index.html)添加 html 结构定义页面内容(标题、导航、正文、页脚)设置样式(通过 css)测试页面如何制作 HTML 首页HTML 首页是网站的核心页面,它通常包含该
html首页怎么做
2024-05-21

html怎么做网页

作为Web开发的入门基础,HTML是非常关键的。本文将介绍HTML的基础知识,并提供一些创建网页的基本步骤和技巧。一、HTML的基础知识HTML全称Hyper Text Markup Language,是一种用于描述网页结构的标记语言。HTML由标签、属性和值组成。标签用于定义不同的元素,如标题、段落、列表、链接等。属性描述了元素的属性,如颜色、大小等。值用于设置属性的值,如红
2023-05-14

html网页怎么做

制作 html 网页涉及三个关键步骤:使用文本编辑器编写 html 代码(标记语言,用于定义网页的结构和内容)。在 标签内添加网页内容(包括文本、图像、链接和表单等元素)。保存文件为 .html 格式并使用浏览器预览网页。如何制作 HTM
html网页怎么做
2024-04-05

thinkphp如何做分页

本文小编为大家详细介绍“thinkphp如何做分页”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp如何做分页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、控制器中的代码实现在控制器方法中,我们
2023-07-06

redis 怎么做秒杀 java

Redis秒杀Java实现详细指南:Redis以其高速和高吞吐量构建高性能的秒杀系统。流程包括创建商品库存、验证用户请求、扣减库存和返回结果。Java实现涉及使用ZSetOperations和@PostMapping。优化措施包括令牌桶限流、排队机制和异步处理。示例代码展示了秒杀服务实现。其他注意事项包括分布式锁、监控和回滚机制,以确保系统稳定性和可靠性。
redis 怎么做秒杀 java
2024-04-02

java redis怎么做缓存

使用JavaRedis缓存可以提高应用程序性能,因为它允许快速存储和检索数据。通过使用RedisTemplate类与Redis交互,可以轻松地存储、检索并管理缓存。SpringFramework还提供了方便的注解,用于自动管理缓存。此外,需要考虑缓存失效策略,例如时间到期、写时失效和最近最少使用,以确保缓存中的数据保持最新。
java redis怎么做缓存
2024-04-02

java 怎么做redis缓存

Redis是一种高性能键值存储数据库,广泛用作缓存系统。在Java中集成Redis可通过Redis客户端库或SpringBoot集成。Redis配置包括创建实例、配置连接池和选择缓存策略。常见操作包括存储和检索数据、设置过期时间、使用管道和事务。最佳实践建议选择适当的数据类型、优化过期时间、处理缓存失效、监控和调整性能。遵循这些实践可确保有效使用Redis缓存,提高应用程序性能、减少数据库负载、增强可用性和简化数据访问。
java 怎么做redis缓存
2024-04-02

云服务器做网页怎么做

云服务器(CloudDistributedServer)是一种用于存储和共享文件和数据的计算机操作系统,可以用于搭建基于互联网的在线服务和虚拟现实应用程序等。在云服务器上,用户可以将自己的资源上传到服务器上,以便其他人访问和使用这些资源。以下是使用云服务器做网页的步骤:准备工作:了解云服务器提供商的基本信息和操作系统、数据库和网络连接的设置。这些信息可以在官方网站上找到,也可以在云服务器论
2023-10-26

html子网页怎么做

通过 5 个步骤创建 html 子网页:创建主网页。创建子网页 html 文档。在主网页中创建链接。将子网页复制到网站目录。测试链接。如何创建 HTML 子网页HTML 子网页是主网页中的一个独立页面,它通过链接与主网页相连。创建 HTM
html子网页怎么做
2024-05-16

云服务器做网页怎么做的

云服务器(CloudDistributedServer,简称CDN)是一种提供快速、可靠、多节点的网络存储和访问技术的服务。它使用虚拟化技术和负载均衡技术,为网站提供高可用性和快速、稳定的网络访问。以下是在云服务器上创建网页的步骤:下载并安装所需的云服务器CDN。CDN能够确保您的网站在多个节点上同时加载,而不会出现网站无法加载或加载缓慢的问题。配置您的ApacheWeb服务器。您可以使
2023-10-26

怎么用ES做Redis监控

本篇内容主要讲解“怎么用ES做Redis监控”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用ES做Redis监控”吧!序言图示:Redis热度排名Redis当下很流行,也很好用,无论是在业务
2023-06-17

redis怎么做消息队列

redis 消息队列Redis 是一个内存数据库,兼具消息代理的功能,可以用来构建高效的消息队列系统。如何使用 Redis 构建消息队列要使用 Redis 构建消息队列,需要执行以下步骤:创建队列列表和消息列表:使用 LPUSH 命令
redis怎么做消息队列
2024-05-21

redis怎么做缓存机制

Redis是一个开源的、高性能的键值数据库,它可以用作缓存机制来提高系统的访问速度。以下是使用Redis作为缓存机制的一些步骤:1. 安装和配置Redis:首先需要在服务器上安装Redis,并进行相关的配置。可以参考Redis官方网站或其他
2023-09-06

编程热搜

目录