基於這些資料結構建立了乙個物件系統

2022-06-06 21:15:10 字數 624 閱讀 4689

物件 — redis 設計與實現

在前面的數個章節裡, 我們陸續介紹了 redis 用到的所有主要資料結構, 比如簡單動態字串(sds)、雙端鍊錶、字典、壓縮列表、整數集合, 等等。

redis 並沒有直接使用這些資料結構來實現鍵值對資料庫, 而是基於這些資料結構建立了乙個物件系統, 這個系統包含字串物件、列表物件、雜湊物件、集合物件和有序集合物件這五種型別的物件, 每種物件都用到了至少一種我們前面所介紹的資料結構。

通過這五種不同型別的物件, redis 可以在執行命令之前, 根據物件的型別來判斷乙個物件是否可以執行給定的命令。 使用物件的另乙個好處是, 我們可以針對不同的使用場景, 為物件設定多種不同的資料結構實現, 從而優化物件在不同場景下的使用效率。

除此之外, redis 的物件系統還實現了基於引用計數技術的記憶體**機制: 當程式不再使用某個物件的時候, 這個物件所占用的記憶體就會被自動釋放; 另外, redis 還通過引用計數技術實現了物件共享機制, 這一機制可以在適當的條件下, 通過讓多個資料庫鍵共享同乙個物件來節約記憶體。

最後, redis 的物件帶有訪問時間記錄資訊, 該資訊可以用於計算資料庫鍵的空轉時長, 在伺服器啟用了maxmemory功能的情況下, 空轉時長較大的那些鍵可能會優先被伺服器刪除。

建立乙個物件

一般情況下,乙個類不可以直接使用,需要根據類建立乙個物件,才可以使用。建立物件分為3個步驟 1.導包 指出使用什麼類,在哪個位置。格式 import 包名稱.類名稱 若建立的物件和當前的類在同乙個包下可以省略該步驟。2.建立 格式 類名稱 物件名 new 類名稱 3.使用 使用成員變數 物件名.成員...

資料結構 程式設計實現乙個單鏈表的建立

1 結構體 結構體是一種自定義資料型別。宣告結構體時使用的關鍵字是struct,定義一種結構體的一般形式為 struct 結構體名 結構體型別與基本型別一樣,都是從c語言中繼承下來的,但是c 結構體與c語言結構體是有區別的,c語言中沒有繼承 成員函式等概念,所以c語言中的結構體成員只能包含c語言中的...

資料結構 反轉乙個單鏈表(基於Java語言實現)

示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null思想 先準備乙個新的鍊錶作為結果鍊錶,遍歷原鍊錶,每遍歷乙個節點,就把該節點首插到結果鍊錶中。主要步驟是 1 遍歷 2 首插 具體實現 定義變數 1 定義 cur 變數作為當前節點,cur head 2 定義結果鍊錶 res...