iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis如何实现微信步数排行榜功能
  • 203
分享到

Redis如何实现微信步数排行榜功能

2024-04-02 19:04:59 203人浏览 安东尼
摘要

小编这次要给大家分享的是Redis如何实现微信步数排行榜功能,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。1. 前言之前写过一篇博客,讲解的是Redis的5种数据结构

小编这次要给大家分享的是Redis如何实现微信步数排行榜功能,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

1. 前言

之前写过一篇博客,讲解的是Redis的5种数据结构及其常用命令,当时有读者评论,说希望了解下这5种数据结构各自的使用场景,不过一直也没来得及写。

碰巧,在3月份找工作面试时,有个面试官先问了我Redis有哪几种数据结构,在我讲完后,面试官又问了我以下问题:

如何用Redis实现微信步数排行榜?

相信很多小伙伴都知道,可以使用Redis的有序集合ZSET来实现,本篇博客就基于此面试题,来讲解下ZSET的使用场景,以及微信步数排行榜的大致实现思路。

2. ZSET的使用场景

ZSET的经典使用场景是用来实现排行榜,举几个常见的例子,比如百度热榜:

Redis如何实现微信步数排行榜功能

比如微博热搜榜:

Redis如何实现微信步数排行榜功能

比如微信步数排行榜:

Redis如何实现微信步数排行榜功能

3个场景的实现思路基本一致,接下来,我们以微信步数排行榜为例,了解下如何使用Redis的ZSET,实现微信步数排行榜。

3. 微信步数排行榜的大致实现思路

注意事项:本文的重点是Redis的ZSET的使用,因此只是分析了微信步数排行榜的大致实现思路,实际实现肯定比文中分析的复杂的多。

首先,我们来分析下微信步数排行榜的需求:

  • 排行榜是以日期为单位的,历史日期的排行榜是可以查看的
  • 排行榜可能并不会显示所有好友的步数,比如我的微信有349位好友,但排行榜从来没有显示过这么多,假设最多只显示步数前200的好友
  • 步数是异步更新的,所以每隔一段时间步数同步后,排行榜都会变化
  • 排行榜中,好友头像和微信昵称可以理解为不变的(变动的几率小,就像热搜榜中的标题和Url),但步数和点赞数是可变的

基于以上分析的需求,大致实现思路如下:

  • 使用Redis的ZSET数据结构
  • 设置key时,基于微信号和日期,比如我的微信是zwwhnly,今天的日期是2020-06-01,那么key就可以设计为:StepNumberRanking:zwwhnly:20200601
  • 设置value时,将好友的昵称作为成员member,将好友的步数作为分值score,如下所示:

Redis如何实现微信步数排行榜功能

使用Redis的HASH数据结构,其中key为第2步的key+第3步的成员member,value分别存储好友头像、昵称、步数、点赞数,如下所示:

Redis如何实现微信步数排行榜功能

Redis如何实现微信步数排行榜功能

获取微信步数排行榜时,分为以下2步:

1)先查询出微信步数排行榜中的好友昵称,也就是查询StepNumberRanking:zwwhnly:20200601的值

2)根据获取到的好友昵称,查询好友步数信息,也就是查询StepNumberRanking:zwwhnly:20200601:yst的值

4. 使用到的Redis命令

上面分析出了大致的实现思路,接下来我们讲解下使用到的Redis命令。

4.1 ZADD

执行如下命令初始化微信步数排行榜,以上面图片中的9个好友为例,分2次初始化:

ZADD StepNumberRanking:zwwhnly:20200602 25452 yst 23683 zq 23599 ljx 20391 yyq 19628 XxZz

ZADD StepNumberRanking:zwwhnly:20200602 18261 lxx 16636 zcc 16555 clc 16098 fl

Redis如何实现微信步数排行榜功能

执行完的效果如下图所示:

Redis如何实现微信步数排行榜功能

可以看到,默认是以score正序排列的,也就是步数从少到多排列。

4.2 HMSET

因为展示步数排行榜时,需要展示昵称、头像、步数、点赞数,所以可以借助于Redis的HASH 数据结构来存储,这时就要用到HMSET命令:

Redis如何实现微信步数排行榜功能

执行完的效果如下图所示:

Redis如何实现微信步数排行榜功能

Redis如何实现微信步数排行榜功能

4.3 ZINCRBY

每隔一段时间,好友的步数是会更新的,此时可以使用ZINCRBY命令来更新好友步数,假设我们只更新步数位于前2位好友的步数,给他们的步数增加10,就可以执行以下命令:

ZINCRBY StepNumberRanking:zwwhnly:20200602 10 yst
ZINCRBY StepNumberRanking:zwwhnly:20200602 10 zq

Redis如何实现微信步数排行榜功能

执行完的效果如下图所示:

Redis如何实现微信步数排行榜功能

更新完排行榜里的步数后,不要忘记执行HMSET命令更新好友的步数:

Redis如何实现微信步数排行榜功能

Redis如何实现微信步数排行榜功能

Redis如何实现微信步数排行榜功能

4.4 HINCRBY

当我们在步数排行榜里给好友点赞时,可以使用HINCRBY命令,把上图中的likeNum加1:

HINCRBY StepNumberRanking:zwwhnly:20200602:zq likeNum 1

Redis如何实现微信步数排行榜功能

Redis如何实现微信步数排行榜功能

4.5 ZRANGE

在所有的数据就绪后,剩下的就是查询了,我们可以使用ZRANGE命令获取排行榜里的好友信息:

ZRANGE StepNumberRanking:zwwhnly:20200602 0 -1

Redis如何实现微信步数排行榜功能

可以看出,查询出的好友信息是按步数从少到多排序的,而排行榜应该按步数从多到少排序,这就用到了下面的ZREVRANGE命令。

4.6 ZREVRANGE

ZREVRANGE命令和ZRANGE命令类似,不过是按score倒序的,刚好符合排行榜的场景。

比如执行命令:

ZREVRANGE StepNumberRanking:zwwhnly:20200602 0 -1 WITHSCORES

Redis如何实现微信步数排行榜功能

可以看出,查询出的好友信息按步数从大到小排序,刚好就是在排行榜要展示的顺序。

不过,排行榜一般都不展示所有的数据,这里我们的数据比较少,如果只获取步数top5的好友,就可以执行如下命令:

ZREVRANGE StepNumberRanking:zwwhnly:20200602 0 4 WITHSCORES

Redis如何实现微信步数排行榜功能

如果你要获取top200,就将上面的4修改为199。

4.7 HGETALL

获取到了排行榜里的好友信息,最后一步就是获取这些好友的步数、点赞数、头像、昵称这些信息,也就是我们之前使用HASH数据结构存储的信息,此时我们可以使用HGETALL命令,如下所示:

HGETALL StepNumberRanking:zwwhnly:20200602:yst

Redis如何实现微信步数排行榜功能

如果对这些命令不是很熟悉,可以看下我之前发布的一篇博客:Redis中5种数据结构的使用场景介绍。

5. 总结

Redis的ZSET数据结构非常适合用在排行榜的场景,比如百度热搜、微博热搜榜、游戏排行榜、微信步数排行榜,面试官肯定不会问你ZSET都有哪些命令,每个命令的细节等等,但问你如何使用Redis实现微信步数排行榜,就可以了解到你对Redis数据结构的掌握程度。

所以,学习好Redis的5种数据结构的基础很重要,但更重要的是要知道这些数据结构如何使用,每种数据结构用在什么场景最为合适,毕竟要学以致用嘛。

看完这篇关于Redis如何实现微信步数排行榜功能的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Redis如何实现微信步数排行榜功能

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Redis如何实现微信步数排行榜功能
    小编这次要给大家分享的是Redis如何实现微信步数排行榜功能,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。1. 前言之前写过一篇博客,讲解的是Redis的5种数据结构...
    99+
    2022-10-18
  • 【Redis面试题】如何使用Redis实现微信步数排行榜?
    1. 前言 之前写过一篇博客,讲解的是Redis的5种数据结构及其常用命令,当时有读者评论,说希望了解下这5种数据结构各自的使用场景,不过一直也没来得及写。 碰巧,在3月份找工作面试时,有个面试官先问了我Redis有哪几种数据结构...
    99+
    2018-04-12
    【Redis面试题】如何使用Redis实现微信步数排行榜?
  • redis实现排行榜功能
    redis的zset可以很方便地用来实现排行榜功能,下面简单介绍python如何使用redis实现排行榜功能 加入排行榜 获取redis实例 import redis mai...
    99+
    2022-11-12
  • redis如何实现世界杯排行榜功能
    这篇文章主要介绍了redis如何实现世界杯排行榜功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题外话:小编先给大家推荐一个不错的微信公众...
    99+
    2022-10-18
  • 使用Redis实现实时排行榜功能
    游戏中存在各种各样的排行榜,比如玩家的等级排名、分数排名等。玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标。 一个...
    99+
    2022-11-12
  • redis如何实现排行榜
    这篇文章将为大家详细讲解有关redis如何实现排行榜,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 前言实现一个排版榜,我们通常想到的就是mysql的order by ...
    99+
    2022-10-18
  • 使用Redis实现排行榜功能的方法
    这篇文章给大家分享的是有关使用Redis实现排行榜功能的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。下面由Redis教程栏目给大家介绍使用Redis实现排行榜功能的方法,希...
    99+
    2022-10-18
  • 使用redis怎么实现一个排行榜功能
    使用redis怎么实现一个排行榜功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。加入排行榜获取redis实例import redismain_rds...
    99+
    2023-06-15
  • 如何使用Redis的有序集合实现排行榜功能
    这篇文章给大家分享的是有关如何使用Redis的有序集合实现排行榜功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一个典型的游戏排行榜包括以下常见功能:能够记录每个玩家的分数;能...
    99+
    2022-10-18
  • 手把手教你使用redis实现排行榜功能
    目录一、需求背景二、实现思路  1、利用数据库2、利用Redis总结一、需求背景 最近项目需要做排行榜功能,实现员工邀请用户注册排行榜,要求是实时更新,查询要快。员工所属支行、二级行、省行,界面要根据条件显示排...
    99+
    2023-04-14
    redis 实现排行榜 redis做排行榜 redis 排行榜
  • Redis如何实现排行榜及相同积分按时间排序功能
    这篇“Redis如何实现排行榜及相同积分按时间排序功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来...
    99+
    2022-10-19
  • 如何使用Redis和Ruby开发排行榜功能
    如何使用Redis和Ruby开发排行榜功能引言:在很多应用中,排行榜功能是一项常见的需求。无论是游戏中的玩家排名、音乐平台的歌曲排行,还是网站的热门帖子榜单,都需要实时的维护和展示排行榜数据。Redis是一款快速、高性能的内存数据库,而Ru...
    99+
    2023-10-22
    开发 redis Ruby
  • 如何用Redis实现排行榜及相同积分按时间排序功能
    本篇内容主要讲解“如何用Redis实现排行榜及相同积分按时间排序功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Redis实现排行榜及相同积分按时间排序...
    99+
    2022-10-19
  • Redis实现排行榜及相同积分按时间排序功能的实现
    目录不考虑积分相同积分相同按时间排序,排名唯一设计1设计2积分相同按时间排序,并列排名在日常的开发中,经常会碰到需要对用户的分值等进行排序,比如在游戏里面需要对战斗力进行排行,在组队活动中需要对各个队伍的贡献值进行排行,...
    99+
    2022-08-22
    Redis排行榜按时间排序 Redis时间排序 Redis相同积分按时间排序 Redis排行榜
  • 如何利用redis实现排行榜的小秘诀
    这篇文章给大家分享的是有关如何利用redis实现排行榜的小秘诀的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言排行榜作为互联网应用中几乎必不可少的一个元素,其能够勾起人类自身对...
    99+
    2022-10-18
  • java基于redis有序集合如何实现排行榜
    小编给大家分享一下java基于redis有序集合如何实现排行榜,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言排行榜作为互联网...
    99+
    2022-10-18
  • 微信小程序如何实现长按拖拽排序功能
    本篇内容主要讲解“微信小程序如何实现长按拖拽排序功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序如何实现长按拖拽排序功能”吧!演示效果:wxml<view class...
    99+
    2023-06-30
  • Android如何实现仿微信@好友功能
    这篇文章主要介绍Android如何实现仿微信@好友功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上个效果图就是这么个功能1. 分析需求输入@跳转到联系人界面,选中一个或者多个好友返回到当前界面按退格键删除整块内...
    99+
    2023-05-30
    android
  • 如何使用PHP实现微信小程序的计步器功能?
    如何使用PHP实现微信小程序的计步器功能?随着健康意识的提高,计步器成为了许多人生活中不可或缺的健康工具。在微信小程序中,我们可以通过使用PHP语言实现一个简单的计步器功能,为用户提供记录步数和数据分析的服务。下面将介绍如何使用PHP实现微...
    99+
    2023-10-26
    PHP 微信小程序 计步器功能
  • 微信小程序转发功能如何实现
    这篇文章主要介绍“微信小程序转发功能如何实现”,在日常操作中,相信很多人在微信小程序转发功能如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序转发功能如何实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作