Redis:Redis實現排行榜功能

1、實現原理
咱們分析一下排行榜,一個用戶一個排名,意味着要去重,這時咱們會想到Java的一種數據結構Set。不過Set又是無序的。有沒有一種結構是能夠保住元素惟一以及有序的呢。
幸運的是,還真的有。Redis的ZSet的就是這樣的一種數據結構。Zset裏面的元素是惟一的,有序的,按分數從小到大排序。做爲一名優秀的crud程序員,咱們從這幾個方方面入手瞭解zset結構。
 
 
2、代碼實踐
 
<?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);
}
 

本博客地址: wukong1688php

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

轉載請註明出處!謝謝~~程序員

相關文章
相關標籤/搜索