<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Redis資料庫就像是一個雜湊表,首先對key進行雜湊運算得到雜湊值再取模得到一個下標,每個元素是一個節點,節點之間形成連結串列。這感覺有點像Java中的HashMap。
不同的資料型別的實現方式是不一樣的,可以通過object encoding命令檢視底層真正的資料儲存結構
同一種型別在不同的條件下所採用的資料結構也不一樣,例如:
Redis是鍵值對形式的資料庫,key可以是任意值(PS:最終都會轉成string),value有多種資料型別
詳見:https://redis.io/docs/manual/data-types/data-types-tutorial/
至此,已經很清楚,hash底層的結構是 ziplist 和 hashtable
那麼,什麼時候會從ziplist轉成hashtable呢?這個在redis.conf中有相關的設定,如下:
預設情況下:
當ziplist中entry的數量超過512的時候,會轉成hashtable 單個元素的值超過64位元組的時候,會轉成hashtable
在Redis中hashtable就是字典dict
通過原始碼,可以看到dict是這樣定義的:
通過原始碼得知,redisDb代表redis資料庫,redisObject代表存到資料庫中的資料
字典dict的結構前面已經看過了,於是整個資料庫的結構大概就是下面這個樣子:
ziplist是一種特殊編碼的雙連結串列,被設計成非常節省記憶體。它儲存字串和整型值,其中整數被編碼為實際整數,而不是一系列字元。它允許在O(1)時間內在列表的任意一邊進行push和pop操作。但是,由於每個操作都需要重新分配ziplist所使用的記憶體,因此實際的複雜性與ziplist所使用的記憶體量有關。
ziplist的大體佈局如下:
<zlbytes> <zltail> <zllen> <entry> <entry> ... <entry> <zlend>
<uint32_t zlbytes>: 一個無符號整數,用於儲存ziplist佔用的位元組數,包括zlbytes欄位本身的四個位元組。需要儲存這個值,以便能夠調整整個結構的大小,而不需要首先遍歷它。
<uint32_t zltail> : 列表中最後一個條目的偏移量。
<uint16_t zllen> : 條目的數量。當有超過2^16-2個條目時,這個值被設定為2^16-1,我們需要遍歷整個列表來知道它包含多少項。
<uint8_t zlend> : 一個特殊的條目,表示 ziplist 的結尾
linkedlist是一個雙向連結串列
quicklistNode是一個32位元組的結構體,描述快表的ziplist。
quicklist = linkedlist + ziplist
到此這篇關於Redis 雜湊Hash底層資料結構詳解的文章就介紹到這了,更多相關Redis雜湊底層資料結構內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援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