redis實戰之使用redis實現排行榜

2021-12-29 22:15:49 字數 1459 閱讀 3525

設想在乙個遊戲中,有上百萬的玩家資料,如果現在需要你根據玩家的經驗值整理乙個前20名的排行榜,你會怎麼做呢?

一般的做法是寫一條類似下面這條sql語句的方式來獲取:

select * from game_socre order by score desc limit 0,20這種方式在資料量較小的情況下可行,但是在資料量大的情況下查詢速度將變慢,特別是還需要聯表查詢時,速度下降的就更明顯了。

這時你可以考慮使用redis來實現這個功能。

實現這個功能主要用到的redis資料型別是redis的有序集合zset。zset 是set 型別的乙個擴充套件,比原有的型別多了乙個順序屬性.此屬性在每次插入資料時會自動調整順序值,保證value值按照一定順序連續排列。

主要的實現思路是:

1、在乙個新的玩家參與到遊戲中時,在redis中的zset中新增一條記錄(記錄內容看具體的需求)score為0

2、當玩家的經驗值發生變化時,修改該玩家的score值

3、使用redis的zrevrange方法獲取排行榜

實現**:

) ));//設定dongxie的score

) ));//設定xidu的score

) ));//更新xidu的score

執行結果:

原文:

redis實戰 Redis命令之集合

redis的集合以無序的方式儲存多個各不相同的元素,使用者可以快速對集合執行新增元素 移除元素以及檢查元素是否存在於集合中的操作。命令用例 描述注意 sadd sadd key item item 將乙個或多個元素插入到集合中,並返回被新增元素當中原本不存在於集合中的數量 srem srem key...

Redis實戰(23)Redis使用Lua指令碼

lua 指令碼功能是 reids 2.6 版本的最大亮點,通過內嵌對 lua 環境的支援,redis 解決了長久以來不能高效地處理 cas check and set 命令的缺點,並且可以通過組合使用多個命令,輕鬆實現以前很難實現或者不能高效實現的模式。命令不多,就下面這幾個 eval evalsh...

redis實戰 Redis命令之列表

列表的主要優點在於它可以包含多個字串值,使得使用者可以將資料集中在同乙個地方。redis允許使用者從序列的兩端推入或者彈出元素,獲取列表元素,以及執行各種常見的列表操作。命令用例 描述注意 rpush rpush key value value 從右端推入乙個或多個值 多個值用空格隔開 lpush ...