Redis 的每種數據結構(String、List、Hash、Set、Sorted Set)在底層都采用了不同的實現方式,根據數據規模和特性動態選擇最優的編碼(encoding)以節省內存和提高性能。以下是詳細原理分析:
1. String(字符串)
底層實現:
-
int:當存儲整數值且可用
long
表示時,直接使用整數存儲。 -
embstr:當字符串長度 ≤ 44 字節時,使用連續內存分配的嵌入式字符串(Redis 3.2+)。
-
raw:當字符串長度 > 44 字節時,使用動態字符串(SDS, Simple Dynamic String)。
SDS 特點:
-
預分配空間減少內存重分配次數。
-
二進制安全(可存儲任意二進制數據)。
-
常數復雜度獲取字符串長度(
len
字段)。
2. List(列表)
底層實現:
-
ziplist(壓縮列表):
-
適用條件?
-