Redis Hash Slots:我踩过的性能坑

Why didn't anybody tell me about Redis hash slots?

我在一家共享经济配送应用负责调度服务,核心挑战是快速计算骑手与订单的距离。起初,我使用 H3 将坐标哈希化并缓存到 Redis,却忽略了 Redis Cluster 的 Hash Slots 机制。由于键名差异导致请求无法批量处理,原本的一次 MGET 被拆解成数十次独立网络往返,严重拖慢了系统。后来,我利用 Redis 的 Hash Tag 特性,通过大括号强制将相关键分配到同一槽位,成功将多次请求合并。此外,我还通过本地预排序键、使用 EVAL 脚本处理过期时间以及将 JSON 值改为 CSV 格式,进一步优化了性能。这段经历让我深刻体会到,在 n 值很大的场景下,简单的算法往往行不通,必须依赖更复杂的优化策略和充分的基准测试。

我测量过与路由服务的交互是我们最大的瓶颈,因此认为用简单算法对接 Redis 就能解决问题,却忽略了在我们的场景下 n 值始终很大,需要比预期更复杂的算法才能完成任务。
  1. lesam

    我有点搞不懂,在这种缓存里你是怎么再次找到数据的?看起来你是在随机给缓存键加盐,那我不明白后续请求是怎么找到缓存数据的。

  2. HeavyStorm

    我能看出作者在这篇文章上花了不少心思。但我实在受不了更多的 AI 腔调了,尤其是整天跟 Claude 聊了一整天之后。这太可惜了——博客已经消沉了(好吧,至少是衰退了)半个世纪,而 AI 可能会是压死它的最后一根稻草。

    “你听起来像个机器人”这句话对我来说有了全新的含义。

  3. abofh

    因为你从某人那里继承了它,而那个人是在这玩意儿还没出现之前就建好的,直到你转向无服务器架构时才发现了它。

    我是怎么猜出文章本身的?

同日更多故事

2026-09-26