redis的有序集的實現原理
有序集
從使用者的角度來看,有序集,它首先是一個集合,並且,他可以是順序的。按照redis提供的命令來看,他可以通過指定key來查詢成員,另一方面,可以通過指定score分數,來返回一個還區間的有序成員。
如下圖所示:
雜湊方案
如果使用redis中的字典基本資料結構,從邏輯上講,是能滿足需求,在查詢效率方面,能達到近O(1)時間複雜度。但如果要返回區間的時候,則需要進行記憶體排序操作,這個場景效率較慢,需要O(logn)時間複雜度
跳躍表
redis底層資料儲存的一個方案中,有一個使用了跳躍表的方案。這個方案最大的好處是查詢效率接近RBT結構,但儲存的是有序的資料。對於範圍型查詢特別友好。但是,對於找到分值的操作zrank,則時間複雜度由O(1)上升到了O(logn)。
工程實踐
真是redis的底層實踐中,優化考慮了效能優先,使用雜湊+跳躍表的方式。既使用跳躍表保留了範圍查詢的優勢,又使用雜湊使得查詢分值類操作達到O(1)的高效操作
相關文章
- Redis有序集合原理Redis
- redis有序集合實現實時排名Redis
- 使用Redis的有序集合實現排行榜功能Redis
- 《Redis實戰》筆記-Redis的有序集合Redis筆記
- redis之有序集合型別(Zset)——排行榜的實現Redis型別
- 《閒扯Redis十一》Redis 有序集合物件底層實現Redis物件
- redis原始碼分析之有序集SortedSetRedis原始碼
- Redis分散式鎖的原理和實現Redis分散式
- Redis Sentinel實現原理Redis
- GO實現Redis:GO實現Redis叢集(5)GoRedis
- Redis分散式鎖的使用與實現原理Redis分散式
- redis叢集原理Redis
- Redis分散式實現原理Redis分散式
- 面試官:Redis中有序集合的內部實現方式是什麼?面試Redis
- 使用 Redis 有序集合實現 IP 歸屬地查詢Redis
- 【Redis實戰】有序集合型別Redis型別
- 進階的Redis之雜湊分片原理與叢集實戰Redis
- Redis GEO & 實現原理深度分析Redis
- redis叢集之主從複製叢集的原理和部署Redis
- Redis核心原理與實踐--列表實現原理之ziplistRedis
- Redis的五大資料型別實現原理Redis大資料資料型別
- redis有序集合Redis
- Redis 叢集伸縮原理Redis
- PHP+Redis 有序集合實現 24 小時排行榜實時更新PHPRedis
- redis個人原始碼分析2---dict的實現原理Redis原始碼
- Redis專案實戰---應用及理論(二)---Redis叢集原理Redis
- Redis有序集合命令Redis
- Redis有序集合物件Redis物件
- Redis有序集合操作Redis
- alibaba fastjson的JsonObject有序的實現和原始碼分析ASTJSONObject原始碼
- Redis過期策略及實現原理-Redis面試題Redis面試題
- Redis核心原理與實踐--列表實現原理之quicklist結構RedisUI
- redis叢集之分片叢集的原理和常用代理環境部署Redis
- Redis叢集實現方案選型分析Redis
- 高效能的Redis之物件底層實現原理詳解Redis物件
- Redis、Zookeeper實現分散式鎖——原理與實踐Redis分散式
- GO實現Redis:GO實現Redis的AOF持久化(4)GoRedis持久化
- Vitepress 的實現原理Vite