6.整數(shù)集合

整數(shù)集合是集合鍵的底層實現(xiàn)之一,當一個集合只包含整數(shù)值元素,并且這個集合的元素數(shù)量不多時,Redis就會使用整數(shù)集合作為集合鍵的底層實現(xiàn)。

6.1 整數(shù)集合的實現(xiàn)


整數(shù)集合

contents數(shù)組是整數(shù)集合的底層實現(xiàn):整數(shù)集合的每個元素都是contents數(shù)組的一個數(shù)組項,各個項在數(shù)組中按值的大小從小到大有序地排列,并且數(shù)組中不包含任何重復項。

length屬性記錄了整數(shù)集合包含的元素數(shù)量,也即是contents的數(shù)組長度

contents數(shù)組的真正類型取決于encoding屬性的值

6.2 升級

每當我們要將一個新元素添加到整數(shù)集合里面,并且新元素的類型比整數(shù)集合現(xiàn)有所有元素的類型都要長時,整數(shù)集合需要先進行升級,然后才能將新元素添加到整數(shù)集合里面。

升級整數(shù)集合病添加新元素供分為三步進行:

1)根據(jù)新元素的類型,擴展整數(shù)集合底層數(shù)組的空間大小,并為新元素分配空間

2)將底層數(shù)組現(xiàn)有的所有元素都轉(zhuǎn)換成與新元素相同的類型,并將類型轉(zhuǎn)換后的元素放到正確的位置上,而且在放置元素的過程中,需要繼續(xù)維持底層數(shù)組的有序性質(zhì)不變。

3)將新元素添加到底層數(shù)組里面。

因為每次向整數(shù)集合添加新元素都可能會引起升級,而每次升級都需要對底層數(shù)組中已有的元素進行類型轉(zhuǎn)換,所以向整數(shù)集合添加新元素的時間復雜度為O(N)

6.3 升級的好處

1.提升整數(shù)集合的靈活性

2.盡可能地節(jié)約空間

6.4 降級

整數(shù)集合不支持降級操作,一旦對數(shù)組進行了升級,編碼就會一直保持升級后的狀態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 整數(shù)集合(intset)是集合鍵的底層實現(xiàn)之一,當一個集合只包含整數(shù)值元素,并且這個集合的元素數(shù)量不多時,redi...
    我要嘗鮮閱讀 722評論 0 1
  • 本文為筆者對在學習Redis過程中所收集資料的一個總結(jié),目的是為了以后方便回顧相關(guān)的知識,大部分為非原創(chuàng)內(nèi)容。特此...
    EakonZhao閱讀 14,634評論 0 9
  • 《Java并發(fā)編程實踐》中對線程饑餓死鎖的解釋是這樣的:在使用線程池執(zhí)行任務(wù)時,如果任務(wù)依賴于其他任務(wù),那么就可能...
    吃番茄的土撥鼠閱讀 1,780評論 1 1
  • 2009年底,婆婆因病去世,考慮八十多歲公公年紀大,身體也不好,就開始跟著四哥四嫂生活,其余弟兄每家每個月出三百塊...
    枯藤殘鴉兒閱讀 766評論 0 0
  • 大洋鏈Oeanc是一種利用去中心化和去信任方式集體維護一本數(shù)據(jù)簿的可靠性的技術(shù)方案。根據(jù)預(yù)測,在2018年,大洋鏈...
    虛擬貨幣閱讀 255評論 0 1

友情鏈接更多精彩內(nèi)容