一、Redis常用数据类型
1. String(字符串)
最基本类型,存储文本、数字、二进制数据; 底层底层数据结构SDS。
2. Hash(哈希)
键值对集合,适合存储对象。
3. List(列表)
有序字符串列表,支持双端操作。
4. Set(集合)
无序唯一元素集合,支持集合运算。
5. Zset(有序集合)
按分数排序的唯一元素集合。
二、Zset底层数据结构
1. Zset底层数据结构
- 核心结构:跳跃表 + 哈希表
- 跳跃表(Skip List):维护有序性,支持O(log n)的范围查询
- 哈希表(Hash Table):存储元素→分数映射,支持O(1)的分数获取
2. 内存优化结构
- Redis 7.2之前:压缩列表(ZipList)。元素少时使用ZipList节省内存 。存在级联更新问题,影响性能 。
- Redis 7.2之后:列表包(ListPack),替代ZipList,解决级联更新问题 。
- 优势: 避免连锁更新,插入/删除性能更稳定;支持从尾部遍历,提升某些操作效率;内存布局更优化
- 触发条件(默认配置):元素个数 ≤ 128 且 每个元素长度 ≤ 64字节;超过阈值自动转换为跳跃表+哈希表 。