鍵10万種を50万回引きました。手前に100件だけ置くと、当たったのは15.6%です。
1000件に増やしても34.2%でした。10倍にして、伸びは2.2倍にとどまります。
手元のプログラムで使う辞書と同じ感覚で、鍵を指定して値を出し入れします。
Redisという名前そのものが、仕組みを表しています。
公式はRedisは、離れた場所にある辞書の役を担うもの、を意味すると説明しています。辞書とは、鍵から値を引く仕組みのことです。
続けて手元のプログラムで使うのと同じ種類の値を、Redisの側で使えるとも書かれています。
公式はRedisの中の各項目は、固有の鍵を持つと定めています。取り出す道筋は、この鍵だけです。
条件を指定して探す形ではありません。何を鍵にするかを、置くときに決めておくことになります。
条件で探せる仕組みとの違いは、PostgreSQLの記事で扱った索引の話とつながります。あちらは条件から行を探す道筋を別に作る形でした。
1番目がいちばん多い使い方です。どれだけ効くかは、置ける量で決まります。
Redis stands for Remote Dictionary Server.原文Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」 この内容の有効期限2027-02-18
10倍にして伸びは2.2倍です。増やすほど、1件あたりの効き目は下がります。
Redisでは各項目が固有の鍵を持ちます。手前に置く場合、その鍵の単位で置くことになります。
置ける件数を変えたときに、どれだけ当たるかを数えました。
鍵10万種を50万回引きます。引かれ方には偏りを付けてあります。
鍵 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倍にしても、当たる割合は倍にならない。
Each item within Redis has a unique key.原文Redis 公式ドキュメント「Redis as an in-memory data structure store quick start guide」 この内容の有効期限2027-02-18
初回は必ず元のところへ行きます。10万種を全部置ける入れ物でも84.9%でした。
Redisには、手元と同じ種類の値を置けます。公式も手元のプログラムで使うのと同じ種類のデータ型を、Redisの側で使えると述べています。
同じ種類の値を置けても、置いてある保証はありません。前の計測の最下行がその例です。
入れ物が10万件で、鍵も10万種です。捨てられることはありません。それでも84.9%です。
残る15.1%はその鍵を初めて引いた回です。置いていないものは取りに行くしかありません。
つまり当たる割合の上限は、鍵の種類と引く回数の比で決まります。種類が多く回数が少ないほど、上限が下がります。
手前の入れ物が使えなくなると、全部が元のところへ行きます。前の表でいえば、いちばん上より悪い状態です。
5万件で運用していたなら、元のところへの問い合わせは8.9万回から50万回へ5.6倍になります。
この5.6倍を元のところが受けきれるかを、先に確かめておくことになります。受けきれないなら、手前の入れ物は速さの仕組みではなく、必須の部品です。
引かれ方の偏りは式で作ったもので、実際の使われ方ではありません。偏りが強ければ少ない量でもっと当たり、弱ければ当たりません。0.2msと4msという応答も置いた値です。捨て方も、いちばん長く使われていないものから捨てる形に固定しました。ここで見せているのは、当たる割合の伸びが置く量に対して鈍ること、上限は100%ではないことの2つです。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る