基于redis实现点赞数,点击数,排行榜
使用场景
对于某些视频或者文章有点赞数和点击数, 通过这些数据就可以进行排行榜的功能了
使用异步队列 + 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实现点赞数,点击数,排行榜相关推荐
- apache在线升级yum_基于Redis实现在线游戏积分排行榜 - phyger
介绍 本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 背景知识 Redis Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...
- 基于Redis实现在线游戏积分排行榜
介绍 本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 背景知识 Redis Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...
- 基于Redis实现在线游戏积分排行榜!体验一下云服务器!
基于Redis实现在线游戏积分排行榜 体验地址:https://developer.aliyun.com/adc/scenario/44d54481170f4914996d3ae53b818f32?s ...
- 云起实验室:基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 点击立即参与云产品场景体验https://developer.aliyun.com/adc/scenario/44d544 ...
- 点赞用redis还是mysql_基于redis的点赞功能设计
前言 点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回m ...
- java千万用户实现实时排名_想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜...
本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事.有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况.于是周榜(按周重置更新的榜单)诞生了 ...
- 想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜
本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事.有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况.于是周榜(按周重置更新的榜单)诞生了 ...
- MySQL存储用户点赞的信息_基于redis实现的点赞功能设计
点赞是我们现在经常见到的一个效果,如朋友圈.微博都有点赞的效果,下面这篇文章主要跟大家分享了基于 redis实现的点赞功能设计思路的相关资料,文中介绍的非常详细,对大家实现点赞功能具有一定的参考学习价 ...
- mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解
点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...
最新文章
- 最强的windows2003安全设置
- [译]GPU加持,TensorFlow Lite更快了
- 手机端系统提交数据的创建时间验证的问题
- 常用HLS优化指令总结
- 解决appium安装app时某些手机弹出的提示框
- 【Liunx】manjaro 配置vscode python开发环境
- python自动化办公-简直出神入化,教你用Python控制Excel实现自动化办公
- java处理图片base64编码的相互转换
- 计算机设备管理系统论文,设备管理系统论文-.doc
- 实验5 数独游戏界面设计
- VS错误的解决解决:LINK fatal error LNK1000: Internal error during IncrBuildImage
- SELECT COUNT用法
- Cocos Creator 虚拟摇杆
- android官方原生主题,原生Android可以更换系统主题吗?
- root后怎么删除授权管理,Root授权管理
- gromacs 安装_gromacs5.x 在linux安装
- Django-(6)
- Unity大型场景程序化生成及优化技术—FPS迷宫生成和优化
- 创新BMW X2 不但有颜有型 还出奇的好开
- HBase的高表和宽表
热门文章
- ArcGIS坐标系篇之坐标系的相关概念(一)
- 有哪些能提升睡眠质量的好物,双十一助眠好物清单推荐
- springboot自定义消息转换器HttpMessageConverter
- 免费分享一个springboot+vue学生选课管理系统,挺漂亮的
- 【C 语言入门】数据类型
- 手写setTimeout和setInterval
- QWidget: Must construct a QApplication before a QWidget 请按任意键继续. . .
- OCR识别的开源分析
- 通过建站学运维(课时8)
- 计算机机房电气技术要求,机房UPS具体技术指标要求.doc