面试真题

数据库 · 中等 · 阿里巴巴

Redis zset的底层结构:压缩列表和跳表,区别,什么时候使用哪一种,为什么不用红黑树?

中等 数据库 🎤 阿里巴巴
参考答案
结论:zset底层使用ziplist(压缩列表)或skiplist+dict(跳表+字典),按阈值切换。区别与选择:1.ziplist:连续内存存储,省内存,但增删查O(n),当元素数<128且成员值<64字节时使用;2.skiplist:多层有序链表,查询O(log n),范围操作快,元素大时切换;3.不用红黑树因跳表范围遍历(如ZRANGE)只需顺链表走,红黑树需中序遍历更复杂,且跳表概率平衡实现简单、缓存局部性好。原理:ziplist是序列化紧凑结构,适合小数据;skiplist配合dict存分值到元素的映射,支撑高效索引。
题目整理自公开面经,答案由校招宝自研生成,仅供参考