Redis常用的数据类型有哪些?Zset的底层数据结构是什么?

一、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字节;超过阈值自动转换为跳跃表+哈希表 。
相关推荐
深邃-1 小时前
【数据结构与算法】-二叉树(2):实现顺序结构二叉树(堆的实现),向上调整算法,向下调整算法,堆排序,TOP-K问题
数据结构·算法·二叉树·排序算法·堆排序··top-k
Flying pigs~~8 小时前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
叼烟扛炮9 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
misL NITL9 小时前
mysql之如何获知版本
数据库·mysql
许彰午9 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
2401_8323655210 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2301_7796224111 小时前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python
2301_7662834411 小时前
c++如何将控制台输出保存到文件_cout重定向到txt【详解】
jvm·数据库·python
北极的冰箱11 小时前
MySQL Ver 8.0.41 for macos14.7密码遗忘
数据库·mysql
XDH_CS11 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql