Redis 實現排行榜

2021-10-01 06:51:32 字數 1562 閱讀 5091

不再介紹資料庫做實時排行榜的弊端,直接介紹redis的有序集合的強大作用。

有序集合的資料和集合一樣,不能重複,但每個元素又可以關聯乙個分數,這個分數可以重複。

需要注意的是,redis版本和命令變化較大,注意執行環境。

執行環境:

redis 庫版本:3.3.11

redis版本:3.2.1

生成資料:

import pymongo

import random

handler = pymongo.mongoclient(

'mongodb:'

).chapter_9.rank_data

for i in

range

(10000

,10100):

data =

handler.insert_one(data)

匯入到有序集合中:

import pymongo

import redis

handler = pymongo.mongoclient(

'mongodb:'

).chapter_9.rank_data

client = redis.redis(

)rows = handler.find(,)

for row in rows:

client.zadd(

"rank"

,)

zadd的第二個引數應該是字典。

檢視匯入的資料:

(f'當前共有人'

)position = client.zrevrank(

'rank'

,10086)+

1print

(f'使用者『10086』的排名為'

(f'排名:, 使用者id:, 積分:'

redis實現排行榜

排行榜功能是乙個很普遍的需求。設想在乙個遊戲中,有上百萬的玩家資料,如果現在需要你根據玩家的經驗值整理乙個前20名的排行榜,你會怎麼做呢?你不可能 order by limit 去實現 select from game socre order by score desc limit 0,20 使用 ...

熱門排行榜 redis實現

最近專案架構公升級,主要對效能方面進行公升級。之前熱門排行榜是通過對點讚量,閱讀量,收藏量等一系列的資料在db通過計算查出來的,效率方面不太好。因此考慮對該功能進行公升級優化,並且新增週期性排行榜如月排行,總排行。在引入快取之後首先考慮的是通過快取實現熱門排行榜的功能,但是考慮到首次引入快取擔心快取...

Redis排行榜的實現

遊戲闖關排行榜以通關次數正序 復活次數倒序和第一次通關的時間倒序來進行排序 第一步是組合排序分值,只有根據排序規則組合出來的分值,才能通過排序獲取到正確的排名。在排序規則中一般會有兩種方式,屬性正序和倒序。正序對於組合數字來說沒有影響,但是倒序就需要進行特殊的處理。那麼多說無益,上 排行榜顧名思義就...