データ基盤

Redisとは|入れ物を100件から1000件に増やしても、当たる割合は15.6%から34.2%だった

何を置く仕組みなのか手前に置くとどれだけ速くなるのか全部置けば100%になるのか

鍵10万種を50万回引きました。手前に100件だけ置くと、当たったのは15.6%です。

1000件に増やしても34.2%でした。10倍にして、伸びは2.2倍にとどまります。

この記事の要点

  • 100件で15.6%
  • 1000件で34.2%
  • 1万件で60.1%
  • 全部置いても84.9%

離れた場所に置いた辞書として扱う

手元のプログラムで使う辞書と同じ感覚で、鍵を指定して値を出し入れします。

Redisという名前そのものが、仕組みを表しています。

公式はRedisは、離れた場所にある辞書の役を担うもの、を意味すると説明しています。辞書とは、鍵から値を引く仕組みのことです。

続けて手元のプログラムで使うのと同じ種類の値を、Redisの側で使えるとも書かれています。

鍵で引くという制約

公式はRedisの中の各項目は、固有の鍵を持つと定めています。取り出す道筋は、この鍵だけです。

条件を指定して探す形ではありません。何を鍵にするかを、置くときに決めておくことになります。

条件で探せる仕組みとの違いは、PostgreSQLの記事で扱った索引の話とつながります。あちらは条件から行を探す道筋を別に作る形でした。

何に使うか

  1. 手前に置いて応答を縮める。次の節で測る
  2. 数を数える。同じ鍵に足していく
  3. 順番を保つ。並びを持つ値の型がある
  4. 期限を付ける。置いた値に寿命を設定できる

1番目がいちばん多い使い方です。どれだけ効くかは、置ける量で決まります

出典Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」2026-08-18 確認
Redis stands for Remote Dictionary Server.
原文Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」 この内容の有効期限2027-02-18

入れ物を100件から1000件に増やしても、当たる割合は15.6%から34.2%だった

10倍にして伸びは2.2倍です。増やすほど、1件あたりの効き目は下がります。

Redisでは各項目が固有の鍵を持ちます。手前に置く場合、その鍵の単位で置くことになります。

置ける件数を変えたときに、どれだけ当たるかを数えました。

入れ物の大きさを変える

鍵10万種を50万回引きます。引かれ方には偏りを付けてあります。

text
鍵 100,000種・引く回数 500,000回。引かれ方は偏らせてある
手前の入れ物から返すと 0.2ms、元のところまで行くと 4ms

入れ物の大きさ  当たった割合  平均の応答  元のところへの回数
100件                   15.6%      3.41ms              422,030回
1,000件                 34.2%      2.70ms              328,754回
10,000件                60.1%      1.71ms              199,268回
50,000件                82.1%      0.88ms               89,701回
100,000件               84.9%      0.77ms               75,430回

100件から1000件で、当たる割合は15.6%から34.2%です。18.6ポイント増えました。

5万件から10万件では82.1%から84.9%で、2.8ポイントです。同じ倍率でも伸びが違います。

伸びが鈍る理由

引かれ方が偏っているためです。最初の100件がよく引かれる鍵で、そこから先は引かれる回数が下がっていきます。

だから効くのは最初のわずかな量です。100件でも15.6%に届きます。

逆に言えば、置く量を10倍にしても応答は3.41msから2.70msにしかなりません。費用は10倍です。

置く量を10倍にしても、当たる割合は倍にならない。

当たった割合(%)入れ物の大きさ(件)→93.4110000100件1000件1万件5万件10万件鍵10万種・50万回での実測。右へ行くほど傾きが寝ていき、費用に見合わなくなる。
図1 ── 入れ物の大きさと、当たった割合
出典Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」2026-08-18 確認
Each item within Redis has a unique key.
原文Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」 この内容の有効期限2027-02-18

全部を置いても100%にはならない

初回は必ず元のところへ行きます。10万種を全部置ける入れ物でも84.9%でした。

Redisには、手元と同じ種類の値を置けます。公式も手元のプログラムで使うのと同じ種類のデータ型を、Redisの側で使えると述べています。

同じ種類の値を置けても、置いてある保証はありません。前の計測の最下行がその例です。

84.9%で止まる理由

入れ物が10万件で、鍵も10万種です。捨てられることはありません。それでも84.9%です。

残る15.1%はその鍵を初めて引いた回です。置いていないものは取りに行くしかありません。

つまり当たる割合の上限は、鍵の種類と引く回数の比で決まります。種類が多く回数が少ないほど、上限が下がります。

止まったときの扱い

手前の入れ物が使えなくなると、全部が元のところへ行きます。前の表でいえば、いちばん上より悪い状態です。

5万件で運用していたなら、元のところへの問い合わせは8.9万回から50万回へ5.6倍になります。

この5.6倍を元のところが受けきれるかを、先に確かめておくことになります。受けきれないなら、手前の入れ物は速さの仕組みではなく、必須の部品です。

余談 この計測での注意

引かれ方の偏りは式で作ったもので、実際の使われ方ではありません。偏りが強ければ少ない量でもっと当たり、弱ければ当たりません。0.2msと4msという応答も置いた値です。捨て方も、いちばん長く使われていないものから捨てる形に固定しました。ここで見せているのは、当たる割合の伸びが置く量に対して鈍ること、上限は100%ではないことの2つです。

出典Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」2026-08-18 確認
You can use the same data types as in your local programming environment but on the server side within Redis.
原文Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」 この内容の有効期限2027-02-18

よくある質問

Redisは何を置く仕組みですか
鍵と、それに結びついた値です。手元のプログラムで使うのと同じ種類の値を、離れた場所に置けます。
手前に置くとどれだけ速くなりますか
当たる割合によります。この計測では100件で3.41ms、5万件で0.88msでした。
増やせば増やすほど効きますか
伸びは鈍ります。100件から1000件で18.6ポイント、5万件から10万件では2.8ポイントでした。
全部を置けば100%になりますか
なりません。この計測では84.9%どまりでした。初回は必ず元のところへ取りに行くためです。

まとめ

  • 鍵で値を引く
  • 手前に置くと応答が縮む
  • 増やす効きは鈍っていく
  • 初回は必ず取りに行く

今日から始められること

  1. よく引かれる鍵の偏りを調べる
  2. いまの入れ物の大きさを確かめる
  3. 当たる割合を記録する
  4. 増やしたときの伸びを見積もる

実務で組んだRedisのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る