要實現電影熱度排行榜,需要記錄每個電影的熱度值,熱度值可以根據不同的算法計算,例如:觀看次數、評分數、評論數等。這里我們以觀看次數為例。
首先,需要使用 Redis 的 Sorted Set 數據結構來存儲電影的熱度值和電影 ID。在 Sorted Set 中,每個電影的熱度值對應一個分數,電影 ID 作為成員。每次添加電影觀看次數時,更新 Sorted Set 中相應電影的熱度值。
以下是一個示例 PHP 代碼實現:
// 連接 Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);// 增加電影觀看次數
$movie_id = 1;
$redis->zIncrBy('movie_hot', 1, $movie_id); // 獲取電影熱度排行榜
$movie_list = $redis->zRevRange('movie_hot', 0, 9, 'WITHSCORES');// 輸出電影排行榜
foreach ($movie_list as $key => $value) {$rank = $key + 1;$movie_id = $value;$hot = $redis->zScore('movie_hot', $movie_id);echo "Rank: $rank, Movie ID: $movie_id, Hot: $hot" . PHP_EOL;
}
在上述代碼中,zIncrBy
方法可以增加 Sorted Set 中指定成員的分數,第一個參數為 Sorted Set 的 key,第二個參數為分數增加的值,第三個參數為 Sorted Set 中的成員,即電影 ID。
zRevRange
方法用于獲取 Sorted Set 從大到小排序的指定區間成員,第一個參數為 Sorted Set 的 key,第二個參數為起始排名,第三個參數為結束排名,第四個參數為 WITHSCORES,表示返回的結果包括成員和分數。
最后,遍歷返回的電影列表,根據排名、電影 ID 和熱度值輸出電影熱度排行榜的信息。