Redis的Sorted Set(ZSet)原理是什么?

2026-04-17 23:500阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1057个文字,预计阅读时间需要5分钟。

Redis的Sorted Set(ZSet)原理是什么?

Sorted Set(ZSet)是一种有序集合数据结构,底层使用压缩列表(ziplist)或跳跃表(skiplist)实现。当元素个数较少时,使用ziplist存储数据;当元素个数较多且需要高效查询时,使用skiplist。

Sorted Set (ZSet) 数据结构
  • Sorted Set (ZSet), 即有序集合, 底层使用 压缩列表(ziplist) 或者 跳跃表(skiplist)

    1. 使用 压缩列表(ziplist)
      当同时满足下面两个条件时,使用 ziplist 存储数据
      • 元素个数少于128个 (zset-max-ziplist-entries: 128)
      • 每个元素长度小于64字节 (zset-max-ziplist-value: 64)
    2. 不满足上面的条件, 使用 跳跃表(skiplist)
      • zset 在转为 skiplist 之后,即使元素被逐渐删除,也不会重新转为 ziplist
  • 有趣的命名: Sorted Set 为啥不缩写为 SSet ? GitHub有人提问

    • Z代表XYZ中的Z, 所以有排序的意思(这个说法有点牵强吧)
    • Set命令已经使用S作为前缀了, 所以Sorted Set不再使用S (可信度较高)
    • SSet 很奇怪, 很难发音 (这个理由也可以接受)
使用 ziplist 图解

使用 skiplist 图解 skiplist 定义

跳表是一种数据结构。

阅读全文

本文共计1057个文字,预计阅读时间需要5分钟。

Redis的Sorted Set(ZSet)原理是什么?

Sorted Set(ZSet)是一种有序集合数据结构,底层使用压缩列表(ziplist)或跳跃表(skiplist)实现。当元素个数较少时,使用ziplist存储数据;当元素个数较多且需要高效查询时,使用skiplist。

Sorted Set (ZSet) 数据结构
  • Sorted Set (ZSet), 即有序集合, 底层使用 压缩列表(ziplist) 或者 跳跃表(skiplist)

    1. 使用 压缩列表(ziplist)
      当同时满足下面两个条件时,使用 ziplist 存储数据
      • 元素个数少于128个 (zset-max-ziplist-entries: 128)
      • 每个元素长度小于64字节 (zset-max-ziplist-value: 64)
    2. 不满足上面的条件, 使用 跳跃表(skiplist)
      • zset 在转为 skiplist 之后,即使元素被逐渐删除,也不会重新转为 ziplist
  • 有趣的命名: Sorted Set 为啥不缩写为 SSet ? GitHub有人提问

    • Z代表XYZ中的Z, 所以有排序的意思(这个说法有点牵强吧)
    • Set命令已经使用S作为前缀了, 所以Sorted Set不再使用S (可信度较高)
    • SSet 很奇怪, 很难发音 (这个理由也可以接受)
使用 ziplist 图解

使用 skiplist 图解 skiplist 定义

跳表是一种数据结构。

阅读全文