整數集合(intset)是集合鍵的底層實現之一當乙個集合只包含整數值元素,並且這 個集合的元素數量不多時,redis就會使用整數集合作為集合鍵的底層實現
contents:陣列
1.儲存元素的陣列
2.值的大小從小到大有序地排列
3.陣列中不包含任何重複項
length:長度
記錄了整數集合包含的元素數量
encoding:編碼
contents陣列的真正型別
當新增乙個新元素比所有原有元素要長的時候,整數集合要進行公升級才能新增進去
步驟:
1.根據新元素的型別,擴充套件整數集合底層陣列的空間大小,並為新元素分配空間
2.將底層陣列現有的所有元素都轉換成與新元素相同的型別,並將型別轉換後的元素 放置到正確的位上,而且在放置元素的過程中,需要 繼續維持底層陣列的有序性質不變
3.將新元素新增到底層陣列裡面
提公升靈活性
通過自動公升級可以隨意地將 intl6_t、int32_t或者int64_t型別的整數新增到集合中,而不必擔心出現型別錯誤, 這種做法非常靈活。
節約記憶體
整數集合現在的做法既可以讓集合能同時儲存三種不同型別的值,又可以確保公升級操 作只會在有需要的時候進行,這可以盡量節省記憶體。
整數集合是集合鍵的底層實現之一
整數集合的底層實現為陣列,這個陣列以有序、無重複的方式儲存集合元素,在有 需要時,程式會根據新新增元素的型別,改變這個陣列的型別
公升級操作為整數集合帶來了操作上的靈活性,並且盡可能地節約了記憶體
整數集合只支援公升級操作,不支援降級操作
Redis學習筆記(五) 整數集合
2.整數集合的api 參考資料 redis中,整數集合是集合鍵的底層之一。當乙個集合只包含整數元素,且這個集合中元素個數不多的情況下,redis就會使用整數集合作為集合鍵的底層實現。1.1 資料結構設計 以redis6.0原始碼為例,整數集合由intset.c intset結構定義,資料結構設計如下...
Redis 整數集合
整數集合時集合鍵的底層實現之一,適用於只包含整數值,且數量不多的使用場景。可用於儲存int16 t,int32 t,int64 t的整數值。整數集合公升級 整數集合在儲存數值時,如果新的元素長度比久的大,那需要公升級。步驟如下 根據新元素的型別,擴充套件整數集合底層陣列空間大小,為新元素分配空間。將...
redis 原理 資料結構 整數集合 五
集合鍵的底層 intset 實現之一,當乙個集合只包含數值,並且數值的元素並不多時,就會選擇使用整數集合作為底層實現,本地 0 sadd number 1 2 5 6 4本地 0 object encoding number intset 注 雖然contens型別為int 8但是真正儲存的儲存的型...