''

Orien Daily

  1. Redis 的有序集合为什么选跳表而不是红黑树翻开 Redis 的源码,t_zset.c 里有序集合(ZSET)的底层实现有两个:元素少时用 ziplist,元素多时切换到 skiplist

    Redis 的有序集合为什么选跳表而不是红黑树

    翻开 Redis 的源码,t_zset.c 里有序集合(ZSET)的底层实现有两个:元素少时用 ziplist,元素多时切换到 skiplist。跳表这个词很多人听过,但未必想过一个更深层的问题——为什么不是红黑树?

    Redis 作者 antirez 本人在邮件列表里解释过这个选择。他的理由有三层。第一,跳表的实现比红黑树简单太多。红黑树的插入删除要处理旋转、变色、兄弟侄子关系,调试起来像在解魔方;跳表就是多层链表,插入靠随机抛硬币决定层数,删除直接摘节点,代码量差了一截。第二,跳表的范围查询天然友好。ZRANGEBYSCORE 这种操作在跳表里就是从底层定位起点后沿链表遍历,O(log N + M) 一路走完;红黑树做范围查询要先定位起点,再中序遍历,实现路径更曲折。第三,跳表每个节点有回退指针(backward pointer),可以高效做 ZREVRANGE,而红黑树反向遍历需要额外处理。

    跳表的核心思路其实很直觉:一条单链表查找是 O(N),如果在每隔一个节点上加一层"快线",查找就近似二分了;再加一层更快线,继续递推。层数由抛硬币(概率 1/2 升层)决定,期望层数 log₂N,所以查找、插入、删除都是期望 O(log N)。它用随机的概率一致性替代了红黑树严格的旋转不变量。

    !skip list structure

    看源码还有一个细节容易漏掉:Redis 的跳表每个节点最多 32 层(ZSKIPLIST_MAXLEVEL 宏),概率用的是 1/4 而非经典的 1/2,这让平均层数从 log₂N 降到 log₄N,空间更省,代价只是常数因子的差异。

    所以这个选择本质上是工程判断:在理论复杂度相同的前提下,选可读性更强、范围操作更顺手的数据结构。

  2. 🎵 When We Fall — Grouper专辑:Dragging a Dead Deer Up a Hill · 2:07Grouper把人声埋进吉他的雾里,像隔着一整面墙听谁在哼歌,When We Fall两分钟不到就散了,但那种往下坠的失重感会一直挂着

    🎵 When We Fall — Grouper
    专辑:Dragging a Dead Deer Up a Hill · 2:07

    Grouper把人声埋进吉他的雾里,像隔着一整面墙听谁在哼歌,When We Fall两分钟不到就散了,但那种往下坠的失重感会一直挂着。

    🔗 Spotify · #推歌 #盯鞋

  3. 📸 @YejiBrasil #YEJI[🖤] Pocket fez 110,337 streams em seu segundo dia!Foi a segunda música com mais streams do álbum, atrás apenas da title track Motto@ITZYofficial[🖤] Pocket 上线第二天就有 110,337 次直播!这是专辑中播放量第二高的歌曲,仅次于主打歌《Motto》@ITZY官方 #예지 #있지 #YEJI #ITZY原文 #黄礼志

    📸 @YejiBrasil #YEJI
    [🖤] Pocket fez 110,337 streams em seu segundo dia!

    Foi a segunda música com mais streams do álbum, atrás apenas da title track Motto

    @ITZYofficial

    [🖤] Pocket 上线第二天就有 110,337 次直播!

    这是专辑中播放量第二高的歌曲,仅次于主打歌《Motto》

    @ITZY官方 #예지 #있지 #YEJI #ITZY
    原文 #黄礼志

  4. 📸 @AceYejii #YEJIPocket is the most streamed song after the title track that’s how powerful soloist Yeji is. Let’s keep up !!《Pocket》是继主打歌之后播放量最高的歌曲,可见 Yeji 独奏者的实力

    📸 @AceYejii #YEJI
    Pocket is the most streamed song after the title track that’s how powerful soloist Yeji is. Let’s keep up !!

    《Pocket》是继主打歌之后播放量最高的歌曲,可见 Yeji 独奏者的实力。让我们继续努力吧! #yeji
    原文 #黄礼志

  5. 🌅 Orien Daily 朝刊【5.21】1️⃣ OpenAI推翻离散几何猜想 — AI数学突破2️⃣ Meta在沙特阿联酋屏蔽人权账户 — 审查与商业妥协3️⃣ SpaceX提交IPO申请 — 史上最大IPO4️⃣ xAI去年亏损64亿美元 — Grok扩张计划曝光5️⃣ Qwen3.7-Max发布 — Agent能力大幅提升6️⃣ GitHub内部源码遭泄露 — TeamPCP声称入侵7️⃣ Google I/O百项发布 — Gemini Omni亮相8️⃣ 日本民事裁判全面数字化 — 提诉到判决全在线频道:@OrienDaily

    🌅 Orien Daily 朝刊【5.21】

    1️⃣ OpenAI推翻离散几何猜想 — AI数学突破
    2️⃣ Meta在沙特阿联酋屏蔽人权账户 — 审查与商业妥协
    3️⃣ SpaceX提交IPO申请 — 史上最大IPO
    4️⃣ xAI去年亏损64亿美元 — Grok扩张计划曝光
    5️⃣ Qwen3.7-Max发布 — Agent能力大幅提升
    6️⃣ GitHub内部源码遭泄露 — TeamPCP声称入侵
    7️⃣ Google I/O百项发布 — Gemini Omni亮相
    8️⃣ 日本民事裁判全面数字化 — 提诉到判决全在线

    频道:@OrienDaily

  6. 📸 @RK_tani_ASOBI #YEJI ×2イェジ姉さんといる時は、完全に妹なマコちゃん可愛い!🧡💛和艺智姐姐在一起的时候,真子简直就像妹妹一样可爱! 🧡💛 #ITZY #YEJI #ITZY_Motto #MAKO #NiziU原文 #黄礼志

    📸 @RK_tani_ASOBI #YEJI ×2
    イェジ姉さんといる時は、完全に妹なマコちゃん可愛い!🧡💛

    和艺智姐姐在一起的时候,真子简直就像妹妹一样可爱! 🧡💛 #ITZY #YEJI #ITZY_Motto #MAKO #NiziU
    原文 #黄礼志