Redis:Redis實現排行榜功能


一、實現原理
我們分析一下排行榜,一個用戶一個排名,意味着要去重,這時我們會想到Java的一種數據結構Set。不過Set又是無序的。有沒有一種結構是可以保住元素唯一以及有序的呢。
幸運的是,還真的有。Redis的ZSet的就是這樣的一種數據結構。Zset里面的元素是唯一的,有序的,按分數從小到大排序。作為一名優秀的crud程序員,我們從這幾個方方面入手了解zset結構。
 
 
二、代碼實踐
 
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->select(2);//選擇數據庫1
 
 
$key = "hot";
 
 
//insert($redis, $key);
//get_rank_list($redis, $key);
 
 
get_rank($redis, $key, 'key29');
 
 
/**
* 插入數據
* @param $redis
* @param $key
*/
function insert($redis, $key)
{
    $id = rand(1, 20);
    $redis->zIncrBy($key, 1, 'key' . $id);
    echo 'done';
}
 
 
/**
* 獲取 top N
* @param $redis
* @param $key
*/
function get_rank_list($redis, $key)
{
    $top = 10; //獲取前10個
    $list = $redis->zRevRange($key, 0, $top - 1, true);
    print_r($list);
}
 
 
/**
* 獲取某個key的排名
* @param $redis
* @param $key
* @param $id
*/
function get_rank($redis, $key, $id)
{
    echo $redis->zRank($key, $id);
}
 

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/12356920.html

轉載請注明出處!謝謝~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM