1. 程式人生 > 資料庫 >Redis設計與實現(五)整數列表

Redis設計與實現(五)整數列表

整數集合是集合鍵的底層實現之一,當一個集合只包含整數元素,並且這個集合的元素不多的時候就會選擇使用整數集合來儲存。

整數陣列的結構相對簡單一點,只有三個成員變數,encoding編碼方式,length表示陣列中的元素長度,contents[]用來存放整數陣列。要注意的是因為是整數了所以在放入的時候是一個維持有序的過程,並且不會包含任何的重複。

在C裡面int是有不同的型別的,所有無論你放入的是什麼int型別,最終的實現都是依靠encoding來進行的,如果encoding是一個16位的,你放入8位的,也會天然的變成16位的。

 

 如果在一個16位的陣列中放入一個64位的元素需要進行什麼樣的前置條件整合呢?首先會根據新64位的元素拓展整個底層陣列的空間大小,並給新元素分配空間。將底層陣列現有的所有元素都轉化為和64位相同的元素,然後再有序的把新的元素放入陣列中去,要麼要如果進行陣列的調整呢?一般的思維可能新一個數組然後進行替換,不過這是C,C的話 如果陣列記憶體不夠大再去申請,如果夠大的 直接進行擴容就行了。