Redis 数据结构与底层
校招考察频度:★ 高频(核心必背·高频生死线) 一句话速记:String 内部三大件(int/embstr/raw,44 字节界限定一次内存分配);ZSet 双剑合璧(跳表区间查,dict 秒查分);Hash 渐进式 rehash 双表平滑迁移防阻塞。
Redis 之所以被称为高性能内存数据库之王,其优雅紧凑的数据结构与底层内存编码居功至伟。面试官问 Redis,第一问通常从“每种类型的底层实现、以及为什么这么设计”开始深挖。
一、String(字符串)内部编码与 44 字节推导(绝杀考点!)
面试官:“Redis 的 String 底层就是 SDS 吗?它有几种内部编码?为什么以 44 字节为界?”
String 内部实际上有 3 种编码:
int:保存 long 类型的 8 字节整数时,直接将指针*ptr强转为整数存储,无需额外分配内存空间。embstr:保存小于等于 44 字节 的短字符串。raw:保存大于 44 字节 的长字符串。