Redisのハッシュスロットを知らなかったせいで、MGETが12回の往復に化けていた
Why didn't anybody tell me about Redis hash slots?
ギグエコノミー配送アプリで配車マッチングを担うエンジニアが、Redisクラスタのハッシュスロットの存在を遅まきながら知るまでの話。H3で座標を丸めたルート推定キャッシュをMSET/MGETで扱ったところ、キーが別スロットに散り、1回のMGETが大量の往復に分裂。ハッシュタグでスロットを固定し、キーをソートしてノード単位にファンアウトし、EVALで期限切れも解決。JSONからCSVへの変更やベンチマークハーネスの重要性も語られる。
Redisは16,384個のハッシュスロットを作り、それをクラスタのノード間に分配する。MSETやMGETのように複数のキーを扱うコマンドは、すべてのキーが同じスロットに収まる場合にのみ有効だ。
HNでの議論
10- lesam
このキャッシュでどうやってデータを再び見つけるのか、混乱しています。キャッシュキーをランダムにソルトしているように見えるので、その後のリクエストがどうやってキャッシュされたデータを見つけるのか理解できません。
- HeavyStorm
著者がこの記事にかなり手をかけたことは分かります。でも、もうAIっぽい話にはうんざりです。ましてや一日中Claudeと話した後ならなおさらです。残念ですね——ブログはこの5年で死につつあり(少なくとも衰退しており)、AIがとどめの一撃になるかもしれません。
「あなたはロボットのように聞こえる」という言葉が、私にとってまったく新しい意味を持ちました。
- abofh
なぜなら、それが当たり前になる前に誰かが作ったものを引き継ぎ、サーバーレスに移行したときにそれに気づいたからです。
記事自体についてはどうやって推測したんでしょうね?