好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 使用Redis實現用戶積分排行榜的教程

使用Redis實現用戶積分排行榜的教程

熱門標簽:隨州營銷電話機器人怎么樣 400電話申請怎么看 400電話從哪里申請濱州 天音通信電話機器人 杭州400電話如何申請的 機器人電話機創意繪畫 江西南昌百應電話機器人 高德地圖標注商家在哪 hbuilder地圖標注

排行榜功能是一個很普遍的需求。使用 Redis 中有序集合的特性來實現排行榜是又好又快的選擇。

一般排行榜都是有實效性的,比如“用戶積分榜”。如果沒有實效性一直按照總榜來排,可能榜首總是幾個老用戶,對于新用戶來說,那真是太令人沮喪了。

首先,來個“今日積分榜”吧,排序規則是今日用戶新增積分從多到少。

那么用戶增加積分時,都操作一下記錄當天積分增加的有序集合。
假設今天是 2015 年 04 月 01 日,UID 為 1 的用戶因為某個操作,增加了 5 個積分。
Redis 命令如下:

ZINCRBY rank:20150401 5 1

假設還有其他幾個用戶也增加了積分:

ZINCRBY rank:20150401 1 2
ZINCRBY rank:20150401 10 3

看看現在有序集合 rank:20150401 中的數據(withscores 參數可以附帶獲取元素的 score):

ZRANGE rank:20150401 0 -1 withscores

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

按照分數從高到低,獲取 top10:

ZREVRANGE rank:20150401 0 9 withscores

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

因為只有三個元素,所以就查詢出了這些數據。

如果每天記錄當天的積分排行榜,那么其他花樣百出的榜單也就簡單了。
比如“昨日積分榜”:

ZREVRANGE rank:20150331 0 9 withscores

利用并集實現多天的積分總和,實現“上周積分榜”:

ZUNIONSTORE rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 rank:20150326 rank:20150327 rank:20150328 rank:20150329 WEIGHTS 1 1 1 1 1 1 1

這樣就將 7 天的積分記錄合并到有序集合 rank:last_week 中了。權重因子 WEIGHTS 如果不給,默認就是 1。為了不隱藏細節,特意寫出。
那么查詢上周積分榜 Top10 的信息就是:

ZREVRANGE rank:last_week 0 9 withscores

“月度榜”、“季度榜”、“年度榜”等等就以此類推。

下面給出一個 PHP 版的簡單實現。使用 Redis 依賴于 PHP 擴展 PhpRedis,代碼還依賴于 Carbon 庫,用于處理時間。代碼量很少,所以就不敲注釋了。

?php

namespace Blog\Redis;

use \Redis;
use Carbon\Carbon;


class Ranks {

  const PREFIX = 'rank:';

  protected $redis = null;


  public function __construct(Redis $redis) {
    $this->redis = $redis;
  }


  public function addScores($member, $scores) {
    $key = self::PREFIX . date('Ymd');
    return $this->redis->zIncrBy($key, $scores, $member);
  }


  protected function getOneDayRankings($date, $start, $stop) {
    $key = self::PREFIX . $date;
    return $this->redis->zRevRange($key, $start, $stop, true);

您可能感興趣的文章:
  • Java簡單使用redis-zset實現排行榜
  • 使用Redis實現微信步數排行榜功能
  • redis實現排行榜的簡單方法
  • 利用redis實現排行榜的小秘訣
  • 利用Redis的有序集合實現排行榜功能實例代碼
  • 基于redis實現世界杯排行榜功能項目實戰
  • redis實現排行榜功能

標簽:葫蘆島 招商 保定 鶴崗 石嘴山 沈陽 昆明 常德

巨人網絡通訊聲明:本文標題《使用Redis實現用戶積分排行榜的教程》,本文關鍵詞  使用,Redis,實現,用戶,積分,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Redis實現用戶積分排行榜的教程》相關的同類信息!
  • 本頁收集關于使用Redis實現用戶積分排行榜的教程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 啊~嗯~进去了~好痛| 草莓??视频旧址www在线| 医生掀开奶罩边躁边狠狠躁漫画| 动漫的胸被揉整段视频| 久久99人妻无码| 中国人视频网在线观看| 女同学上课玩我jiji好爽| 男男H开荤粗肉H文| 日本黄色免费在线| 美女h视频| 欧美一级一区二区A片免费下载| 国内精品自在自线视频香蕉| 在线午夜| 红桃精品??国产精品| 麻豆久久婷婷五月综合国产 | 汇聚全球精美吹潮色xx| 91不卡| 18禁无遮挡又黄又爽又色| 女的被?到爽羞羞视频网站| 麻豆狠色伊人亚洲综合网站| 美女的尿口免费看| 各种姿势被高H灌1v1| 亚洲一级Av无码毛片久久精品1| 99久久er热在这里只有精品 | 深夜动态福利gif动态图ufo出处| 在线污片| 伦理亚洲| 铜铜铜铜铜铜铜好多水| 中文字幕乱码 视频| 岳扒开内裤让我添| 99久在线精品99re6视频| 日产精品一卡2卡三卡四卡的区别| 日本三区四区在线观看视频| mm1313亚洲国产精品无| www.欧美激情| 精品国产亚洲一区二区三区| 男女羞羞视频| 91精品国产调教在线观看| 国产?高潮?白浆?免费| 久久亚洲成a人片| 美足榨精到到男人听话为止|