在Redis来实现用户的单点的使用教程

在Redis来实现用户的单点的使用教程
排名函数是一种常见的需求。这是一个很好的和快速的选择使用特征的有序集合在Redis实现排名。

一般的列表是有效的,比如用户列表。如果没有按照总排名的有效性排名第一,可能总是一些老用户,对于新用户来说,太郁闷了。

首先,来到今天的积分列表,排序规则是今天,从用户添加点的数量从更多到更少。

当用户增加积分时,它们都操作一个日积分增加的有序集合。

假设今天是2015, 04 - 01,UID是1,加5点操作。

Redis命令如下:
zincrby排名:20150401 51

假设还有几个其他用户也添加了点:
zincrby排名:20150401 12
zincrby排名:20150401 103

看看现在的有序集合排序的数据:20150401(积分参数可以伴随着比分获得元素):
zrange排名:20150401 0-1积分

1)2
2)1
3)1
4)5
5)3
6)10 。

按分数从高到低,得到TOP10:
zrevrange排名:20150401 09积分

1)3
2)10 。
3)1
4)5
5)2
6)1

这些数据被查询,因为只有三个元素。

如果你记录当天的分数表,其他数字的列表很简单。

例如,昨天的记分牌:
zrevrange排名:20150331 09积分

通过联盟的总成绩,上周实现了积分榜:
zunionstore等级:7等级:20150323 last_week等级:20150324等级:20150325等级:20150326等级:20150327等级:20150328等级:20150329重量1111111

就这样,7天的积分记录合并成有序集排名:last_week.if权重因素的权重是不给的,默认是1。写出来不是为了隐藏细节。

所以关于TOP10在上周的列表:
zrevrange排名:last_week 09积分

每月的清单、季度清单、年度清单等都是一样的。

一个简单的PHP版本实现如下。Redis的使用取决于PHP扩展phpredis,和代码也依赖于处理时间的碳库,代码很小,所以不评论。
< PHP

命名空间的博客 redis;

Redis使用;
使用碳碳;
阶级队伍{

const前缀= 'rank:';

保护$ redis = null;
公共功能__construct(Redis Redis美元){
美元-> redis = $ redis;
}
公共功能addscores($员,几十美元){
$ =自我:前缀。日期('ymd);
返回这个->使用-> zincrby(美元美元美元的关键,分数,成员);
}
保护功能getonedayrankings(美元美元美元的日期,开始,停止){
$ =自我:前缀。$日期;
返回这个->使用-> zrevrange(美元美元美元的关键,启动,停止,真的);

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部