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(压缩列表): -  适用条件ÿ 
 
-