首页 > 数据库 > Redis > 正文

分享redis多维度排行思路

藏色散人
发布: 2023-04-21 16:01:38
转载
1227人浏览过

本篇文章给大家带来了关于redis的相关知识,其中主要跟大家分享redis 多维度排行思路,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

分享redis多维度排行思路

问题描述

  1. 众所周知redis zset 经常用于排行榜,可以做到开箱即用,但是有一个缺点,就是只支持单维度的排行。

  2. 而实际项目中单维度的排行确很不实用,一个简单的示例,健步走排行,产品的需求是根据步数、完成时间、人名做排行,排序优先度是从左到右。

  3. 我的解决思路是把所有维度都转换成数字,然后这些维度的数字相加,这样就可以解决多维度的排行。

具体解决思路

  1. 步数:原本就是数字可以忽略

  2. 完成时间: 完成时间一般存储的是时间戳,而时间戳是越晚完成值就越大,要做到完成时间越早排名越靠前就需要,越早完成的值就越大。我们可以用一个较大的时间戳减去用户完成时间的时间戳,这样就能做到越早完成值越大。
  3. 人名:人名一般由汉字或字母组成,汉字和字母都是字符串,我们要做排序,第一步就是要把字符串转换成数字,这个过程推荐用php的原生函数mb_ord

  4. 例如一个用户的步数是10000步,完成时间(计算后的)是100000(随意写的一个时间戳),人名是500(计算后)是张三(随意写的),我们就能得到一个值10000.100500(步数.完成时间和人名相加)。
  5. 实际取值的过程中我们可以把小数点后面的去掉,小数点后面的数只用于做排行。

    推荐学习:《Redis视频教程

以上就是分享redis多维度排行思路的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:learnku网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号