使用Redis实现微信步数排行榜功能_Redis

来源:脚本之家  责任编辑:小易  

1、摇一摇,甩一甩,晃一晃,摋一摋,总之原地不动不停的摇动手机。摇手机可以增加步数。2、放在上下或左右移动或摆动的设备上,靠重心的移动改变传感器的变动驱动我们手机软件的运动步数。3、公园里的健身器材,双脚踏板的模拟走路机,站着上面不停的晃动,就相抄当于走路,也能增加步数。4、单摆运动,可以把手机挂在单摆上,让手机自行的摆动,增加步数;或者弄个小风扇扇叶下面挂个绳子绑个手机,这样不停的在运动。微信运动,是由腾讯开发的一个类似计步数据库的公众账号。用户可以通过关注微信运动公众号查看自己每天行走的步数,同时也可以和其他用户进行运动量的PK或点赞www.zgxue.com防采集请勿采集本网。

1. 前言

微信步数是采用采用加速度传感器实现的,这种方式不是很准确,实现起来很简单。

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

排行里面点击自己的头像后显示自己的信息,右上角分享到朋友圈,然后在朋友圈打开自己分享的内容后 有累计的总步数。

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

微信是利用手机硬件进行计步的,我们可以先了解一下计步器的原理,无论是微信还e69da5e887aa62616964757a686964616f31333366303764是其他带有计步功能的软件事实上都是利用的手机内部的陀螺仪、重力感应器

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

一、5261实现同步 1.首先需要4102确认的是你的微信已经获得运动所需的权限,如果没有获得可以通过手机管家进行权限选择,手环B3已经与手机相连哦!接下来进入手机上的华为穿戴应用,然后进入界面之后选择

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

2. ZSET的使用场景

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

比如微博热搜榜:

比如微信步数排行榜:

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

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

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

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

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

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

获取微信步数排行榜时,分为以下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

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

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

4.2 HMSET

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

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

4.3 ZINCRBY

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

ZINCRBY StepNumberRanking:zwwhnly:20200602 10 yst

ZINCRBY StepNumberRanking:zwwhnly:20200602 10 zq

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

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

4.4 HINCRBY

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

HINCRBY StepNumberRanking:zwwhnly:20200602:zq likeNum 1

4.5 ZRANGE

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

ZRANGE StepNumberRanking:zwwhnly:20200602 0 -1

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

4.6 ZREVRANGE

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

比如执行命令:

ZREVRANGE StepNumberRanking:zwwhnly:20200602 0 -1 WITHSCORES

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

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

ZREVRANGE StepNumberRanking:zwwhnly:20200602 0 4 WITHSCORES

如果你要获取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实现微信步数排行榜的文章就介绍到这了,更多相关redis 微信步数排行榜内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

1、打开的趣步行,在的首页界面点击头像右边步数的红色的向上箭头,如图所示:2、点击箭头后,会出现一个提示小窗口,提示内容为需要打开微信小程序,同步微信步数,保持计步准确,直接点右下方的确定。如图所示:3、点击确定后,会自动打开微信小程序,在打开后,会出现一个大的点击同步选项,直接点击,如图所示:4、在小程序第一次同步的时候,点击后会弹出一个小程序授权窗口,点击允许选项。如图所示:5、打开微信界面,如果没有开启微信运动,微信会提示你开启,点击启用改功能选项。如图所示:6、点击同步选项后,在打开的微信小程序上看到已走的步数,和微信步数是一致的,在以后使用过程中,更新步数都需要点击同步,点击下面的返回趣步行。如图所示:7、返回趣步行后,在左上角头像右边的步数显示上,就能看到和微信步数同步的步数。如图所示:以上过程实现了趣步行和微信步数的同步内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • redis实现排行榜的简单方法
  • 利用redis实现排行榜的小秘诀
  • 利用redis的有序集合实现排行榜功能实例代码
  • 基于redis实现世界杯排行榜功能项目实战
  • 使用redis实现用户积分排行榜的教程
  • redis实战记录之限制操作频率
  • redis获取某个前缀的key脚本实例
  • redis3.2开启远程访问详细步骤
  • redis分布式锁的问题与解决方法
  • redis操作学习记录
  • redis中热key问题该如何解决
  • redis适合场景八点总结
  • 在ssm项目中使用redis缓存查询数据的方法
  • redis执行lua脚本的好处与示例代码
  • windows下使用redis requirepass认证不起作用的解决方法
  • 趣走怎么同步微信步数
  • 微信上的微信运动怎么样增加步数?摇手机可以增加步数吗?
  • 微信运动是根据什么来计步的
  • 如何设置苹果手机的记步数的功能?
  • android 微信运动中的的步数是怎么实现的
  • 如何查看微信运动中的累计步数
  • 微信2万步大概是有多少公里呢?
  • 华为b3手环的步数同步到微信运动为什么和手环的数据不一样?
  • 微信运动计步器是怎样一种原理
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页redis实现排行榜的简单方法利用redis实现排行榜的小秘诀利用redis的有序集合实现排行榜功能实例代码基于redis实现世界杯排行榜功能项目实战使用redis实现用户积分排行榜的教程redis实战记录之限制操作频率redis获取某个前缀的key脚本实例redis3.2开启远程访问详细步骤redis分布式锁的问题与解决方法redis操作学习记录redis中热key问题该如何解决redis适合场景八点总结redis执行lua脚本的好处与示例代码windows下使用redis requirepass认证不起作用的解决方法超强、超详细redis数据库入门教程redis常用命令、常见错误、配置技redis操作命令总结redis中5种数据结构的使用场景介64位windows下安装redis教程redis中使用redis-dump导出、导入redis中统计各种数据大小的方法redis常用命令小结让redis在你的系统中发挥更大作用centos 6.6下redis安装配置记录redis实现分布式队列浅析redis3.2开启远程访问详细步骤redis如何存储对象与集合示例详解redis如何实现数据库读写分离详解redis教程(十三):管线详解解决redis服务启动失败的问题redis3.2.6配置文件详细中文说明redis string 类型和 hash 类型学习笔记与redis字符串对象实用笔记redis数据库中实现分布式锁的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved