在python中由redis支持的排行榜

leaderboard的Python项目详细描述


#排行榜

python中由[redis]支持的排行榜(http://redis.io)。

Redis服务器正在运行!redis配置不在本自述文件的范围内,但请查看[redis文档](http://redis.io/documentation)。


排行榜
```

默认redis主机=本地主机
默认redis端口=6379
默认redis数据库=0
默认成员数据命名空间=成员数据
默认全局成员数据=false
asc='asc'
desc='desc'
成员密钥='member'
成员数据键='成员数据'
得分键='得分'
排名键='排名'
````

如果您希望排行榜从最低分到最高分,您可以使用选项'order=leaderboard.asc'。创建新的排行榜实例后,还可以在排行榜上设置"order"选项。上面的各种"…"键选项控制从诸如"leaders"或"aroume"之类的调用返回的排行榜数据散列中的数据。最后,"global_member_data"选项允许您控制可选成员数据是按排行榜(`false`)还是全局(`true`).



高分排名成员('member%s'%index,index)
```

高分排行榜总分页数
>1
`````



>获得关于排行榜中特定成员的一些信息:


``` python
=>高分排行榜总分为(‘会员4’)
4.0





7


高分排行榜总分为(‘会员10’)
<1
````````````````````````````````````````````````````````````````` `

###从排行榜中检索成员

get page 1 in the leaderboard:

``python
highscore-lb.leaders(1)

[{member':'member'10','score':10.0,'rank':1},{member':'member'9','score':9.0,'rank':2},{member':'member'8','score':8.0,'rank':3},{member'":"成员"7","得分":7.0,"排名":4},{'member':"成员"6","得分":6.0,"排名":5},{'member':"成员"5","得分":5.0,"排名":6},{'member':"成员"4","得分":4.0,"排名":7},{'member':"成员"3","得分":3.0,"排名":8},{'member':"成员"2","得分":2.0,"排名":9},{'member':'m余烬1,"分数":1.0,"排名":10}
```


在排行榜中添加更多成员:

```python
在范围(50,96)内的索引中:
高分排名成员('member\%s'%index,index)

highscore\.total\.pages()
````

r一个给定的成员,它将成员拉到给定成员的上方和下方:

`` python
highscore-lb.around-me('member-53')

[{member':'member-65','score':65.0,'rank':31},{member':'member-64,'score':64.0,'rank':32},{member':'member-63,'score':63.0,'rank':33},{'成员':'成员','分数':62.0,'排名':34},{'member':'成员','分数':61.0,'排名':35},{'member':'成员','分数':60.0,'排名':36},{'member':'成员','分数':59.0,排名":37},{'member':'member'58,'score':58.0,'rank':38},{'member':'member'57,'score':57.0,'rank':39},{'member':'member'56,'score':56.0,'rank':40},{'member':'member'55,'score'':55.0,'score':55.0,'rank':41},{'member':'member''member':'member'54,'score''score''member''':54.0,'score'''score''''''score':54.0,''member'member'成员"52","SCORE:52.0,'排名':52.0,'排名':44},{'成员':'成员':'成员':'成员'50,'分数':50.0,'排名':46},{'成员':'成员':'成员'10,'分数':10.0,'排名':10.0,'排名':47},{'成员':'成员':'成员'9,'分数':9.0,'排名':9.0,'排名':9.0,'分数':9.0,'排名':48},{'成员':'成员':'成员':48,{'成员':'成员':'成员':'成员':'成员':'成员':'成员':'成员':'成员':'成员''成员{'成员':'成员'6"分数":6.0,"排名":51},{'member':'member'成员':'member''5','分数:5.0,'排名:5.0,'排名:52},{'member'成员':'member'4','分数:4.0,'排名:53},{'member':'成员':'member'3,'分数:3.0,'排名:3.0,'排名:54},{'member'成员':'member'member'2,'分数:2.0,'排名:55}
`````````




r/>获取排行榜中任意成员(如朋友)列表(如朋友)成员(如朋友)的排名和分数br/>```p高分排名榜(['membercu1','membercu62','membercu67']]





[{'member':'membercu1','分数:1.0,'排名:56},{'member':'membercu62','分数:62.0,'分数:62.0,'排名:34},{'mem成员':'membercu67','分数:67.0,'分数:67.0,'排名:29}]










<<










``巨蟒
高有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于有志于成员"5","得分":5.0,"排名":52},{'member':'member-4,'score':4.0,'rank':53}]
`````




```````````````` python
``` python
`````` python


`{'member'``` member‘member-92,'score''92.0,'rank'`````
````````````````

``````````````````````````````/>```巨蟒





[{'member':'会员95,'score':95.0,'rank':1},{'member':'会员94,'score':94.0,'score':94.0,'rank':2},{'member':'会员93,'score':93.0,'score':93.0,'rank':3},{'member':'会员92,'score''member':'会员92.0,'score':92.0,'score''92.0,'rank':92.0,'rank':92.0,'rank''grank''92.0,'rank''92
```

l成员数据注释

如果使用可选的成员数据,则使用"remove_members_in_score_range"或"remove_members_outside_rank"方法
会将数据留在成员数据哈希中。这是因为内部redis方法'zremrangebyscore',
只返回删除的项目数。它不返回删除的成员。


有效的选项是:

*`带成员数据`-`true`或`false`返回可选的成员数据。
*`page`size`-一个整数值,用于更改该调用的页大小。
*`members`only`-`true`或`false`仅返回不带得分和排名的成员。
*`sort`by`-带成员数据的有效值是'score`和'rank`。

此函数传递以下5个参数:

*`member`:成员名称。
*`current_score`:排行榜中成员的当前分数。如果成员当前未在排行榜中排名,则可能为"nil"。
*"score":成员得分。
*"member_data":可选成员数据。
*"leaderboard_options":排行榜选项,例如"reverse":reverse option的值,成员数据,排行榜\选项:
if(当前\得分为无):
return true
if(得分>;当前\得分):
return true
return false

如果(大卫,大卫,1336)
highscore_b.score_u if('david')

1337.0




;如果(大卫,大卫,1338)
highscore lb.score lb.score lb.score_u if('david,大卫,'1338)

<1338.0
````


多个排行榜

``python
highscore_lb.rank_member_across(['highscores','more_highscores','david',50000,{'member_name':'david})
`````

这只是针对排行榜中得分相同的成员的问题。

default:"leaderboard"类使用默认的redis排序集排序,即具有相同得分的不同成员按字典顺序排序。根据redis排序集上的redis文档,"使用的词典排序是二进制的,它将字符串作为字节数组进行比较。"

tie rankingLeaderBoard的"tierankingLeaderBoard"子类允许您定义一个排行榜,其中具有相同分数的成员将获得samE级。例如,具有相关得分的排行榜成员的排名将为:


````
````
```````
`````
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 30个|2
成员5 10 3
````

请注意,在当前的实现中,"TierankingLeaderBoard"类使用一个额外的排序集来对分数进行排序,因此在为Redis进行内存使用方面的容量规划时请记住这一点。

rboard"leaderboard"的子类允许您定义一个排行榜,其中具有相同得分的成员将具有相同的排名,然后在排名数字中留下差距。例如,具有相关得分的排行榜成员的排名将为:


````
````
``````
``````
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 30个|3
成员5 5
````

端口由[Leaderboard gem]制成(https://github.com/agoragames/Leaderboard)。

官方支持:

*Coffeescript:https://github.com/agoragames/Leaderboard Coffeescript
*python:https://github.com/agoragames/Leaderboard python
*ruby:https://github.com/agorAgMe/LeaveBr.BR/> BR/>非官方支持(它们需要一些特征奇偶性的爱):< http://Github.com/AgracaMe/Java排行榜:BR/**PHP:http://Github.com/AgracaMe/PHP排行榜:BR/>*Scala:http://Github.com/AgracaMe/Scala排行榜
BR/>贡献排行榜

*查看最新的主控形状,以确保功能尚未实现或错误尚未修复
*查看问题跟踪程序,以确保有人尚未请求和/或贡献该功能
*启动功能/错误修复分支
*提交并推送,直到您对自己的贡献满意为止
*请确保为其添加测试。这很重要,所以我不会把它弄坏的无意中重新版本。
*请尽量不要弄乱版本或历史记录。如果你想有自己的版本,或是其他必要的,那是好的,但请孤立自己的承诺,以便我可以选择它。


\copyright

copyright(c)2011-2018 ola mork,david czarnecki。有关详细信息,请参见license.txt。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Requestcontextholder在spring 4中具有并发访问权限。IBMWebSphere上的x Web应用程序?   java如何下载、设置和使用Eclipse?   java如何组合这些mysql语句   java JDBC无法连接到openshift上的mysql数据库   如果存在允许正确处理的重载,java对于方便的方法来说是否可行?   使用hibernate序列的java Spring MVC不存在   具有路径的java Selenium ChromeDriver负载扩展问题   读一本书。java中的java文件   退出队列时,Java队列程序结果为空   Java lambda返回带有重复代码问题的列表   java使用意图从其他活动传递数据并在listview中显示   java如何在java中创建JSON输出   java Android:在不破坏或暂停活动的情况下关闭显示   支持Android电视和手机的java多apk   关于Java应用程序测试和调试的一组问题   如何在JavaSE中使用jdbcRealmShiro进行授权   在java中是否有一个无异常检查的URL解析实用程序?   当页面上有多个相同类型的元素时,java会选择一个特定的元素   递归需要帮助发现java代码中的缺陷