zqhong/redis-ranking
Composer 安装命令:
composer require zqhong/redis-ranking
包简介
README 文档
README
Redis-Ranking 库使用 Redis 的 SortedSet 存储排行数据。其中,
- 使用 ZINCRBY 导入单条分数变更记录;
- 使用 ZREVRANGE 获取 top x 的用户数据(按照 score 从大到小排序);
- 使用 ZRANK 获取某个用户的排名;
- 使用 ZSCORE 获取某个用户的分数;
安装
$ composer require -vvv zqhong/redis-ranking
使用
<?php require __DIR__ . '/vendor/autoload.php'; use Predis\Client; use Zqhong\RedisRanking\Ranking\TotalRanking; use Zqhong\RedisRanking\RankingManger; use Zqhong\RedisRanking\Test\Fixture\DummyTotalDataSource; $redisClient = new Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, 'password' => 'secret', 'database ' => 1, ]); $rankingManager = (new RankingManger()) // 这里的 DataSource 类需要自己实现 ->setDataSource(new DummyTotalDataSource()) // 设置需要获取的排行数据,目前有: // 总排行、日排行、周排行、月排行、季排行、年排行 ->setRankingClasses([ TotalRanking::class, ]) // 设置当前排行数据的 namespace ->setRankingName('test') // 注入 Redis 客户端 ->setRedisClient($redisClient) // 初始化 ->init(); // 获取总排行榜中前三名用户的数据(带分数) $rankingManager->totalRanking->top(3); // 获取总排行榜中前三名用户的数据(不带分数) $rankingManager->totalRanking->top(3, false); // 获取用户 akira 的排名(总排行榜中) $rankingManager->totalRanking->rank('akira'); // 获取用户 akira 的分数(总排行榜中) $rankingManager->totalRanking->score('akira'); // 添加一条分数变更记录(总排行榜) // 如果用户 test 不存在,则会添加该用户,分数为 1 // 如果用户 test 已存在,该用户的分数则会在原分数基础上 + 1 $rankingManager->totalRanking->add('test', 1); // 获取参与该排行榜的人数 echo $rankingManager->totalRanking->cardinality();
目前存在问题:
如果排名规则不仅仅是依靠 score 的话,这种方式的实现就不大合适。
zqhong/redis-ranking 适用场景与选型建议
zqhong/redis-ranking 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 233 次下载、GitHub Stars 达 13, 最近一次更新时间为 2017 年 06 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 zqhong/redis-ranking 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 zqhong/redis-ranking 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 233
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 13
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-06-27