不再介紹資料庫做實時排行榜的弊端,直接介紹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排行榜的實現
遊戲闖關排行榜以通關次數正序 復活次數倒序和第一次通關的時間倒序來進行排序 第一步是組合排序分值,只有根據排序規則組合出來的分值,才能通過排序獲取到正確的排名。在排序規則中一般會有兩種方式,屬性正序和倒序。正序對於組合數字來說沒有影響,但是倒序就需要進行特殊的處理。那麼多說無益,上 排行榜顧名思義就...