<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
儲存的時候我們可以發現,是有一個score(分數)的,這個就是用來排序的欄位。
先說結論,SortedSet底層,根據設定會在不同的時候選用兩種不同的資料結構zset,或ziplist進行儲存:
首先,我們來看幾個引數:
zset-max-ziplist-entries 128 zset-max-ziplist-value 64
if ( field-value對的數量 > ziplist.entries.size || 任意一個filed或value長度 > zset-max-ziplist-value ) { // 使用 zset 進行儲存 } else { // 使用 ziplist 進行儲存
zset的結構如下:
typedef struct zset { dict *dict; zskiplist *zsl; } zset
可以發現,是由字典+跳躍表實現的。
zset
結構體裡有兩個元素,一個是 dict,用來維護 資料 到 分數 的關係,一個是 zskiplist,用來維護 分數所在連結串列 的關係dict
裡通過維護 雜湊表 儲存了 張三=>100,李四=>90 的分數關係。而跳錶則是排序的關鍵
先上圖:
我們知道,連結串列的檢索效率是非常低的,如果要拿到100條資料中間的資料,則需要遍歷50個資料才行,為了解決這個問題,跳錶應運而生
如上圖,就是常規的跳錶,會在原有的資料上加上若干層,指向當前層的下一個節點。
如上圖所示:其實每個節點的層數是隨機的,而且新插入一個節點不會影響其它節點的層數。因此,插入操作只需要修改插入節點前後的指標,而不需要對很多節點都進行調整。這就降低了插入操作的複雜度。實際上,這是skiplist跳錶的一個很重要的特性,這讓它在插入效能上明顯優於平衡樹的方案。
如下圖,假如我們需要查詢23,查詢的路徑如下。
事實上,在插入之前也要先經歷一個類似的查詢過程,在確定插入位置後,再完成插入操作。
這也是SortedSet實現排序的原理。
壓縮列表 ziplist 是為 Redis 節約記憶體而開發的。
壓縮列表是由一系列特殊編碼的連續記憶體塊組成的順序型資料結構,一個壓縮列表可以包含任意多個節點 (entry),每個節點可以儲存 一個位元組陣列 或者 一個整數值 。
1、zl bytes
:用於記錄整個壓縮列表佔用的記憶體位元組數
2、zl tail
:記錄要列表尾節點距離壓縮列表的起始地址有多少位元組
3、zl len
:記錄了壓縮列表包含的節點數量。
4、entryX
:要說列表包含的各個節點
5、zl end
:用於標記壓縮列表的末端
壓縮列表是一種為了節約記憶體而開發的順序型資料結構
壓縮列表被用作列表鍵和雜湊鍵的底層實現之一
壓縮列表可以包含多個節點,每個節點可以儲存一個位元組陣列或者整數值
新增新節點到壓縮列表,可能會引發連鎖更新操作。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45