redis中總共有五種型別的物件,分別是:字串物件、雙端鍊錶、字典、壓縮列表、整數集合。上述的五種型別的物件均具有相同的結構:typedef struct
redisobject
物件的型別總共為五種,如下:
可以通過 type 命令驗證 redis物件的型別
編碼決定了redis物件儲存過程中所採用的資料結構。redis中物件的編碼總共有如下八種:
redis_encoding_int : long型別的整數
redis_encoding_embstr : embstr 編碼的簡單動態字串
redis_encoding_raw : 簡單動態字串
redis_encoding_ht : 字典
redis_encoding_linkedlist : 雙端鍊錶
redis_encoding_ziplist : 壓縮列表
redis_encoding_intset : 整數集合
redis_encoding_skiplist : 跳躍表 和字典
redis中的物件與編碼之間的對應關係就不一一枚舉了,每種物件都會採用兩種編碼格式。在物件占用記憶體較小時,redis採用一種編碼;當物件占用較大的記憶體時,redis則會換種資料結構。
可以應用object encoding 命令驗證物件的編碼
說到引用數量,便需要介紹下redis的記憶體**機制。redis跟蹤物件的引用計數,若是引用計數為零,則自動**此物件。機制如下:
開始,建立乙個物件,此物件的引用計數加1
若是此物件被另外乙個鍵值引用,則此物件的引用計數加1
若是此物件不被另外程式使用,則此物件的引用計數減1
當次物件的引用計數為0 , 物件的記憶體自動釋放
每次訪問redis的物件,此物件便會記錄物件的最後訪問時間。object idletime 命令可以檢視物件的空轉時長,即當前時間-最後訪問時間。
Redis學習筆記(六) 物件
前面我們看了redis用到的主要資料結構,如簡單動態字串 sds 雙向鍊錶 字典 壓縮列表 整數集合等。但是redis並沒有直接使用這些資料結構來實現鍵值對,而是基於這些資料結構建立了乙個物件系統,這個系統包括字串物件 列表物件 雜湊物件 集合物件 有序集合物件,除此之外,redis的物件系統還實現...
python學習筆記2(物件)
物件的屬性不能繼承。方法可以呼叫沒有的引數或方法,但執行時會報錯。property setter標記的方法可以當作屬性來用。class animal object def init self self.age yi def run self print self.name,is running cl...
Redis學習筆記(六) 物件系統
2.redis中的五種物件型別 2.2 列表物件 2.3 雜湊物件 2.4 集合物件 2.5 有序集合物件 3.記憶體 機制 4.物件共享機制 5.物件的空轉時長 總結參考資料 redis沒有直接使用基礎資料結構來實現資料庫,而是基於這些資料結構建立了乙個物件系統。這個系統包含字串物件 列表物件 雜...