Redis(レディス)とは?爆速の秘密「インメモリDB」の仕組みを初心者向けに徹底解説!
生徒
「最近よく『Redis(レディス)』っていう言葉を聞くんですけど、普通のデータベースと何が違うんですか?」
先生
「Redisは、一言で言うと『驚くほど仕事が早い、魔法のメモ帳』のようなデータベースです。普通のデータベースが重厚な辞書だとしたら、Redisは手元にある付箋のようなものですね。」
生徒
「付箋ですか?なんだか簡単そう!でも、どうしてそんなに速く動けるんですか?」
先生
「それは『インメモリ』という特別な仕組みを使っているからです。パソコンが苦手な方でもわかるように、まずは情報の保管場所の違いからゆっくり紐解いていきましょう。」
1. Redis(レディス)の正体とは?
Redis(Remote Dictionary Server)とは、世界中で使われている非常に高速なデータベースの一種です。 皆さんが普段スマホでSNSを見たり、ネットショッピングをしたりする際、画面がパッと表示される裏側で、このRedisが活躍していることがよくあります。
通常のデータベース(MySQLやPostgreSQLなど)は、たくさんの情報を「整理整頓して、長期間大切に保管すること」が得意です。 一方で、Redisは「とにかく素早くデータを取り出すこと」に特化しています。
この「爆速」を実現している最大の理由が、「インメモリ(In-memory)」という仕組みです。 これを理解するために、まずはパソコンの頭脳である「メモリ」と「ストレージ(HDD/SSD)」の違いを、身近な例えで解説します。
2. 「机の上」と「倉庫」の違いでわかるインメモリの仕組み
パソコンの中には、データを保存する場所が大きく分けて2つあります。
- メモリ(RAM): 勉強や作業をするときの「机の上のスペース」
- ストレージ(HDD/SSD): 荷物をしまっておく「大きな倉庫」
普通のデータベースは、データを「ストレージ(倉庫)」に保存します。 倉庫はとても広く、大量の荷物を置いておけますが、いざデータが必要になったとき、いちいち「重い扉を開けて、暗い倉庫の中から目的の箱を探し出す」という作業が必要です。これには時間がかかります。
対して、Redisはデータを「メモリ(机の上)」に置いたまま作業をします。 机の上に道具が置いてあれば、手を伸ばすだけで一瞬で手に取れますよね? 「倉庫まで歩いていく時間」がゼロになるため、Redisは他のデータベースに比べて圧倒的に速く動くことができるのです。
3. Redisが得意なデータの持ち方「キー・バリュー型」
Redisはデータの管理方法も非常にシンプルです。 これを「キー・バリュー型(Key-Value Store)」と呼びます。 「名前(キー)」と「中身(バリュー)」がセットになって保存されている形式です。
例えば、靴箱を想像してください。 「101番」という番号(キー)を見ると、その中に「佐藤さんの靴」という中身(バリュー)が入っています。 複雑な表を読み解く必要がなく、「101番をちょうだい!」と言うだけで中身が手に入るので、処理が単純で高速なのです。
例1:簡単なユーザー情報の保存(SET命令とGET命令)
まずは、特定のキーにデータを保存してみましょう。RedisではSETという言葉を使います。
-- 「user_name」という名前の付箋に「田中太郎」と書いて保存する
SET user_name "田中太郎";
-- 保存した「user_name」の中身を見せて!と命令する
GET user_name;
実行結果は以下のようになります。余計な情報は一切出ず、中身だけが返ってきます。
"田中太郎"
4. なぜRedisが必要なのか?具体的な活用シーン
「速いのはわかったけど、全部のデータをRedisに入れればいいんじゃない?」と思うかもしれません。 しかし、Redis(机の上)には「置ける量に限りがある」「電源を切ると中身が消えてしまう(揮発性)」という弱点もあります。
そのため、プロの現場では「普通のデータベース」と「Redis」を組み合わせて使います。 よく使われるのが「キャッシュ(Cache)」という仕組みです。
例えば、人気アイドルの最新ニュース記事。 何万人もの人が同時にアクセスします。 その度に「重い倉庫(普通のDB)」へ取りに行くと、倉庫がパンクしてしまいます。 そこで、一度取り出した記事を「手元の机(Redis)」に置いておき、2人目以降の人には机からサッと手渡すようにします。これが「キャッシュ」です。
例2:記事の閲覧数を数える(数値を増やす命令)
Redisは数字を増やすのも得意です。INCR(インクリメント)という命令を使います。
-- 「view_count」というキーの数字を1つ増やす
INCR view_count;
-- 現在の回数を確認する
GET view_count;
例えば、最初は「100」だった場合、1回実行すると以下のようになります。
id | key_name | value
---+---------------+-------
1 | view_count | 101
5. プログラミング未経験でもわかる!Redis操作のイメージ
Redisを操作するときは、難しいプログラミング言語を知らなくても、簡単な単語だけで指示が出せます。 代表的な「型(データの種類)」についても少し触れておきましょう。
これまでは1つの名札に1つの値をセットしてきましたが、Redisには「リスト」という型もあります。 これは、行列に並んでいる人の名前を順番に記録しておくようなイメージです。
例3:順番待ちリストを作る(リスト形式)
LPUSH(左から追加)という命令を使って、最新の情報をリストの先頭に追加していきます。
-- 順番待ちリストに「山田」「鈴木」「佐藤」を順番に追加
LPUSH waiting_list "山田";
LPUSH waiting_list "鈴木";
LPUSH waiting_list "佐藤";
-- リストの最初から最後までをすべて表示して!
LRANGE waiting_list 0 -1;
実行した後のリストの状態を、表の形式で見てみましょう。後から入れた人が上にきます。
order | name
------+-------
1 | 佐藤
2 | 鈴木
3 | 山田
このように、Redisは「今すぐ欲しい情報を一瞬で扱う」ための道具なのです。 Webサイトのランキング表示、チャットの最新メッセージ、オンラインゲームのログイン状態の管理など、私たちが「遅い!」とイライラせずにインターネットを使えるのは、Redisのようなインメモリデータベースが影で支えてくれているおかげなのです。
6. Redisを使う上で覚えておきたい「専門用語」の解説
この記事を読み終えた後に、もっと詳しく調べたくなったときのために、よく出てくる用語を整理しておきます。
- 永続化(えいぞくか): メモリ上のデータは消えやすいので、定期的にストレージ(倉庫)に保存して、電源が切れても大丈夫にする仕組みのこと。
- NoSQL(ノーエスキューエル): 昔ながらの「表形式のデータベース」ではない、新しいタイプのデータベースの総称。Redisもこの仲間です。
- スループット: 1秒間にどれくらいの量の仕事をこなせるかという能力。Redisはスループットが非常に高いと言われます。
- レイテンシ: 命令を出してから結果が返ってくるまでの「待ち時間」。Redisはこの待ち時間が驚くほど短いです。
最初は「Redis = 机の上の高速メモ帳」というイメージだけ持っていれば完璧です! データの保存先が「メモリ」であること、そして「キーとバリュー」というシンプルな形で情報を扱うこと。 この2点こそが、Redisが世界中で愛される「速さ」の正体なのです。