すべての章を、読む順に。各章はリポジトリ内の markdown ファイルそのもので、ここで読めるものと GitHub が表示するものは同じ文章です。
テーブルで考えることに慣れた頭で、キーで考え直す。
そのまま動くレシピ —— セッション、レート制限、キュー、ランキング、フィード。
append-only ログ、スナップショット、そして kill -9 の後に何が残るか。
shard、コネクション、そして本当に効く二つのフラグ。
HRANDFIELD、ワイヤ越しに設定できる keyspace イベント、4 つの RESP3 の形、そして訂正された GEOPOS の応答 1 件。
サーバーは無変更。2 つのクライアント crate がようやくエンジンと同じ番号で crates.io に届く。
5.1 を止め、同じディレクトリで 5.2 を起動——Lua の方言が上流と一致します。
5.0 を止めて同じディレクトリで 5.1 を起動——読み出しハザードを修復し、停止を 2 つ除去。
4.1.1 を止めて同じディレクトリで 5.0 を起動——変わる挙動はこれだ。
以前のメジャー——2.x から 3.x、および 3.x から 4.0。
一つの primary と N 個の replica、そして嘘をつかない offset。
failover、epoch、そして我々が守ると約束しない書き込み。
cluster が無い理由と、代わりに何をするか。
RAM より大きなストアに RAM 予算を——コールドな値はディスクへ、コマンドはそのまま。
listener を持つ core を減らして 10.6% を買ったフラグ。
オプトインのアロケータ —— RSS 約 10% 減、代価は正直に値札どおり。
Unix ドメインソケット —— TCP も loopback も kernel コピーも無い。
pipelining と、このエンジンに async runtime が無い理由。
セカンダリインデックス —— どう構築され、何を払うのか。
型付きカラムとインデックスを一度宣言すれば、テーブルのように引ける —— kevy の速度で。
手書きインデックスを置き換えた 8 つの教訓 —— どれも本番で対価を払った。
キー空間の上での KNN。embedding モデルは含まない。
BM25 全文検索と、その限界。
マテリアライズドビュー。書き込みパスが鮮度を保つ。
別プロセスから tail できる変更フィード。
チャンネル、パターン、そして遅い購読者に何が起きるか。
EVAL —— 自前で書いたインタープリタの上で。
宣言済みの行を 1 回の確保に。節約になるかを決めるのは順序のほう。
ブラウザのタブに 151 KB、OPFS へ永続化。
組み込みつつ、socket では RESP を話す。
no_std、アロケータ無し、OS 無し。
kevy が拒むもの、その理由、代わりに使うもの——推測の上に作り始める前に。
すべてのエラー文字列と、それが属する契約。
リレーショナルなワークロードがここで払う代価を、正直に。
Redis から移ってくる道と、出ていく道。
エンジンが応答するすべての動詞。ディスパッチに使う表から生成しています。