Redis設實 05 整數集合

2021-08-06 05:04:45 字數 686 閱讀 3048

《redis設計與實現 黃建巨集 著》第6章

該書基於redis2.9,即redis3.0開發版編寫

用於儲存整數值的集合抽象資料結構

可儲存型別為int16_t、int32_t、int64_t的整數值

集合中不會出現重複元素

typedef struct intsetintset;

整數集合的底層實現是contents陣列

整數集合元素是contents陣列的項(item),在陣列中按值的大小公升序排列,且陣列中不含任何重複項

例:

儲存資料時,新元素型別比整數集合現有所有元素的型別都長時,需要先進行公升級(upgrade)操作,過程為:

1. 根據新元素型別,擴充套件底層陣列的空間大小,並為新元素分配空間

2. 將底層陣列現有所有元素轉換為與新元素相同的型別,並將型別轉換後的元素放置到正確位置,且繼續維持底層陣列的有序性不變

3. 將新元素新增到底層陣列

,整數集合不支援降級操作

Redis 整數集合

整數集合時集合鍵的底層實現之一,適用於只包含整數值,且數量不多的使用場景。可用於儲存int16 t,int32 t,int64 t的整數值。整數集合公升級 整數集合在儲存數值時,如果新的元素長度比久的大,那需要公升級。步驟如下 根據新元素的型別,擴充套件整數集合底層陣列空間大小,為新元素分配空間。將...

Redis設實 06 壓縮列表

redis設計與實現 黃建巨集 著 第7章 該書基於redis2.9,即redis3.0開發版編寫 為節約記憶體而開發 由一系列特殊編碼的連續記憶體塊組成的順序型 sequential 資料結構 可包含任意多個節點 entry 每個節點可儲存乙個位元組陣列或乙個整數值 1個壓縮列表節點可儲存1個位元...

Redis之整數集合

整數集合是集合鍵的底層實現之一,當乙個結合只包含整數值元素,並且這個集合的元素數量不多時,redis就會使用整數集合作為集合作為集合鍵的底層實現。我們先來看一下它的結構 typedef struct intset intse它可以儲存的型別為int16 t int 32t int64 t,並且保證集...