使用场景

对于某些视频或者文章有点赞数和点击数, 通过这些数据就可以进行排行榜的功能了

使用异步队列 + redis的集合

A.php

//点击数
$redis->zIncrBy('click'.':'.date('Ymd'),1,$videoId);
//点赞数
$redis->zIncrBy('love'.':'.$videoId,1,$$user);
//获取当前video的播放数或者点赞数
$redis->zScore($key,$videoId);

B.php 计算日榜周榜月榜

//点击数日榜
$key = 'click:'.date('Ymd');
$redis->zRangeByScore($key);
//点击数周榜

Redis.php

<?php
namespace App\Lib\Redis;
class Redis
{public $redis;public function __construct(){$this->redis = \EasySwoole\Pool\Manager::getInstance()->get('redis')->getObj();}/*** @param $key* @param $score* @param $member* @return bool* 有序集合*/public function zInCrBy($key,$score,$member){if(empty($key) || empty($score) || empty($member)){return false;}return $this->redis->zInCrBy($key,$score,$member);}public function zRank($key,$member){if(empty($key) || empty($member)){return false;}return $this->redis->zRank($key,$member);}/*** @param $key* @param $member* @return bool* 获取指定键成员的分数*/public function zScore($key,$member){if(empty($key) || empty($member)){return false;}return $this->redis->zScore($key,$member);}/*** @param $key* @return bool* 返回有序集中指定区间内的成员,递减*/public function zRevRange($key){if(empty($key)){return false;}return $this->redis->zRevRange($key,0,-1,true);}/*** @param $key* @return bool* 返回有序集中指定区间内的成员,递增*/public function zRange($key){if(empty($key)){return false;}return $this->redis->zRange($key,0,-1,true);}/*** @param $key* @return bool* 返回有序集中指定区间内的成员,通过索引,分数从高到低*/public function zRevRangeByScore($key){if(empty($key)){return false;}return $this->redis->zRevRangeByScore($key,'+inf','-inf',['withScores' => true, 'limit' => array(0, 100)]);}public function __call($name, $arguments){// TODO: Implement __call() method.return $this->redis->$name(...$arguments);}
}

测试

日榜

增加数据

查询当日分数1-10之间的数据,排序

周榜

增加数据

三天的数据得到三个集合的并集

得到排行

WEIGHTS 可以设置每个集合的权重,意为在原来集合分数乘权重得到输出集合的值。
两个集合并集时,如果有相同的key,则可以通过 SUM|MIN|MAX 进行控制。默认为SUM

月榜 略

基于redis实现点赞数,点击数,排行榜相关推荐

  1. apache在线升级yum_基于Redis实现在线游戏积分排行榜 - phyger

    介绍 本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 背景知识 Redis Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...

  2. 基于Redis实现在线游戏积分排行榜

    介绍 本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 背景知识 Redis Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...

  3. 基于Redis实现在线游戏积分排行榜!体验一下云服务器!

    基于Redis实现在线游戏积分排行榜 体验地址:https://developer.aliyun.com/adc/scenario/44d54481170f4914996d3ae53b818f32?s ...

  4. 云起实验室:基于Redis实现在线游戏积分排行榜

    本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 点击立即参与云产品场景体验https://developer.aliyun.com/adc/scenario/44d544 ...

  5. 点赞用redis还是mysql_基于redis的点赞功能设计

    前言 点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回m ...

  6. java千万用户实现实时排名_想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜...

    本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事.有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况.于是周榜(按周重置更新的榜单)诞生了 ...

  7. 想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜

    本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事.有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况.于是周榜(按周重置更新的榜单)诞生了 ...

  8. MySQL存储用户点赞的信息_基于redis实现的点赞功能设计

    点赞是我们现在经常见到的一个效果,如朋友圈.微博都有点赞的效果,下面这篇文章主要跟大家分享了基于 redis实现的点赞功能设计思路的相关资料,文中介绍的非常详细,对大家实现点赞功能具有一定的参考学习价 ...

  9. mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解

    点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...

最新文章

  1. 最强的windows2003安全设置
  2. [译]GPU加持,TensorFlow Lite更快了
  3. 手机端系统提交数据的创建时间验证的问题
  4. 常用HLS优化指令总结
  5. 解决appium安装app时某些手机弹出的提示框
  6. 【Liunx】manjaro 配置vscode python开发环境
  7. python自动化办公-简直出神入化,教你用Python控制Excel实现自动化办公
  8. java处理图片base64编码的相互转换
  9. 计算机设备管理系统论文,设备管理系统论文-.doc
  10. 实验5 数独游戏界面设计
  11. VS错误的解决解决:LINK fatal error LNK1000: Internal error during IncrBuildImage
  12. SELECT COUNT用法
  13. Cocos Creator 虚拟摇杆
  14. android官方原生主题,原生Android可以更换系统主题吗?
  15. root后怎么删除授权管理,Root授权管理
  16. gromacs 安装_gromacs5.x 在linux安装
  17. Django-(6)
  18. Unity大型场景程序化生成及优化技术—FPS迷宫生成和优化
  19. 创新BMW X2 不但有颜有型 还出奇的好开
  20. HBase的高表和宽表

热门文章

  1. ArcGIS坐标系篇之坐标系的相关概念(一)
  2. 有哪些能提升睡眠质量的好物,双十一助眠好物清单推荐
  3. springboot自定义消息转换器HttpMessageConverter
  4. 免费分享一个springboot+vue学生选课管理系统,挺漂亮的
  5. 【C 语言入门】数据类型
  6. 手写setTimeout和setInterval
  7. QWidget: Must construct a QApplication before a QWidget 请按任意键继续. . .
  8. OCR识别的开源分析
  9. 通过建站学运维(课时8)
  10. 计算机机房电气技术要求,机房UPS具体技术指标要求.doc