Redis(レディス)入門!メモリ使用量の仕組みとデータベースの基本構造を初心者向けに徹底解説
生徒
「データベースの勉強を始めたのですが、『Redis(レディス)』は普通のデータベースと何が違うんですか?」
先生
「Redisは、データを『メモリ』という場所に保存するデータベースです。一般的なデータベースが机の引き出しに書類をしまうイメージだとしたら、Redisは机の上に直接書類を広げておくようなものです。だから、取り出すのがものすごく速いんですよ。」
生徒
「机の上だと、置ける量に限りがありますよね?メモリの使用量とか、どうやって決まるのか心配です。」
先生
「その通りです。Redisを使う上で、メモリ(机の広さ)をどう管理するかはとても大切です。まずはその基本構造から一緒に見ていきましょう。」
1. Redis(レディス)とは?超高速なデータベースの秘密
プログラミングの世界でよく耳にする「Redis(レディス)」とは、非常に高速に動作するデータベースの一種です。通常、私たちが使うパソコンやスマートフォンのデータは、ハードディスクやSSDといった「ストレージ(倉庫)」に保存されます。しかし、Redisはこれらとは違い、メインメモリ(RAM)という場所にデータを保存します。
「メモリ」とは、パソコンが今すぐ使う道具を置いておくための「作業机」のような場所です。倉庫(ストレージ)から荷物を持ってくるよりも、机(メモリ)にあるものを手にとる方が圧倒的に速いですよね。この「物理的な距離の近さ」こそが、Redisが超高速だと言われる最大の理由です。
ただし、メモリは倉庫に比べて容量が小さく、値段も高いという特徴があります。そのため、Redisを上手に使うためには「どのくらいのデータがメモリを占領しているのか」というメモリ使用量の把握が非常に重要になります。
エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。
SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る※ Amazon広告リンク
2. Redisのデータ保存の基本:キーバリューストア(KVS)
Redisの構造は非常にシンプルです。それは「キー・バリュー(Key-Value)」という形式でデータを管理しているからです。これは、ちょうど「靴箱」をイメージすると分かりやすいでしょう。
- キー(Key): 靴箱に貼ってある「名前」や「番号」のこと。
- バリュー(Value): その中に入っている「靴(データ)」そのもの。
「1番の箱を開ければ、佐藤さんの靴がある」というように、名前を指定するだけで中身がパッと取り出せます。この単純な構造が、複雑な検索を必要としない高速処理を支えています。
具体例で見るRedisのデータ構造
例えば、WEBサイトのユーザーの名前を保存する場合、以下のような表のようなイメージになります。
キー (Key) | 値 (Value)
--------------+------------
user:1:name | 田中太郎
user:2:name | 鈴木花子
user:3:name | 佐藤健
user:4:name | 伊藤博
ここで「user:1:name」という合言葉をRedisに伝えると、即座に「田中太郎」というデータが返ってきます。
3. メモリ使用量はどうやって決まる?
Redisのメモリ使用量を決定づける要素は、主に3つあります。
1つ目は、「データの量そのもの」です。保存する文字数や数値が多ければ、当然メモリを消費します。2つ目は、「データの持ち方(データ型)」です。Redisには、単純な文字だけでなく、リスト(順番のある並び)やセット(重複のない集まり)といった、データの整理方法がいくつかあります。この整理方法によって、管理用の追加メモリが必要になります。
3つ目は、「Redis自体のシステム利用分」です。Redisがデータを効率よく探すための索引(インデックス)や、接続を維持するための情報もメモリを使います。
実際にデータを追加してメモリの変化をイメージしよう
まずは、一番シンプルな「文字列」を保存する命令を使ってみましょう。
SET user:100 "Yamada"
SET user:101 "Sato"
SET user:102 "Suzuki"
実行後のデータの中身は以下のようになります。
id (Key) | value
--------------+------------
user:100 | Yamada
user:101 | Sato
user:102 | Suzuki
このようにデータを追加するたびに、Redisが使っているメモリ量は少しずつ増えていきます。
4. パフォーマンスを保つためのメモリ管理術
Redisはメモリがいっぱいになると、新しいデータを保存できなくなったり、動作が不安定になったりします。これを防ぐために、Redisには賢い仕組みが備わっています。
その代表が「有効期限(TTL)」の設定です。これは、「このデータは10分経ったら自動的に消してね」という時限爆弾のような予約です。
有効期限を設定するコード例
一時的なログイン情報などを保存する際によく使われます。
SET session:user:999 "Active"
EXPIRE session:user:999 60
この命令により、「session:user:999」というデータは60秒後に自動で削除されます。
キー (Key) | 値 (Value) | 残り時間
-------------------+------------+----------
session:user:999 | Active | 59秒...
自動で消える仕組みのおかげで、ゴミが溜まらず、メモリという大切な机の上を常に綺麗に保つことができるのです。
5. データの整理整頓:ハッシュ構造の活用
メモリを節約するテクニックとして、「ハッシュ」という構造を使う方法があります。これは、1つの大きなキーの中に、関連する小さな項目をまとめて入れる方法です。
バラバラに保存するよりも、一箇所にまとめたほうがRedisの管理コストが下がり、メモリを節約できる場合が多いのです。
ハッシュを使って情報をまとめるコード例
HSET user:500 name "Tanaka" age "30" city "Tokyo"
HSET user:501 name "Ichiro" age "22" city "Osaka"
実行結果のイメージは以下の通りです。
キー (Key) | フィールド (項目) | 値 (Value)
------------+-------------------+-----------
user:500 | name | Tanaka
| age | 30
| city | Tokyo
------------+-------------------+-----------
user:501 | name | Ichiro
| age | 22
| city | Osaka
このように、1人のユーザーに関する情報をひとまとめにすることで、データの見通しも良くなり、メモリの効率的な活用につながります。
6. Redisのパフォーマンスを支える「シングルスレッド」
Redisの速さの秘密は、メモリを使っていることだけではありません。実はRedisは「一度に一つの作業しかしない(シングルスレッド)」という、一見すると非効率そうな設計になっています。
しかし、これが速さの秘訣なのです。複数の人が同時に一つの書類を書き換えると、誰がいつ書いたのかを管理する「交通整理(ロック)」が必要になり、そこで時間が取られます。Redisは「一度に一人しか作業しない」というルールにすることで、この交通整理を一切省き、超スピードで処理をこなしているのです。
初心者のうちは、「Redisはシンプルだからこそ速い!」と覚えておけば間違いありません。
7. メモリ容量を超えそうになったら?「エビクション」の恐怖
もしメモリがいっぱいになってしまったら、Redisはどうするのでしょうか。そこで行われるのが「エビクション(追い出し)」という処理です。
あらかじめ設定したルールに従って、古いデータやあまり使われていないデータを強制的に削除し、新しいデータを入れる隙間を作ります。
- LRU (Least Recently Used): 最後に使ってから一番時間が経っている「忘れ去られたデータ」から消す。
- Random: 無作為にどれかを消す。
- No-Eviction: エラーを出して、新しいデータを一切受け付けない(一番安全な場合もある)。
開発者は、自分のシステムが「データを消してもいいのか、それとも絶対に守らなければならないのか」を考えて、このルールを決める必要があります。
8. メモリ管理を視覚化してチェックしよう
今、Redisがどれくらいメモリを使っているかは、専用の命令でいつでも確認できます。
INFO memory
この命令を打つと、複雑な数字がたくさん出てきますが、特に注目するのは以下の部分です。
used_memory_human: 1.50M
used_memory_peak_human: 2.10M
total_system_memory_human: 8.00G
「used_memory_human: 1.50M」は、今現在1.5メガバイトのメモリを使っているという意味です。これを定期的にチェックすることで、「最近急にメモリが増えてきたな、何かおかしいぞ」と気づくことができます。
Redisのメモリ管理は、まるで家計簿をつけるようなものです。どれだけ収入(メモリ容量)があって、何にどれだけ使っているのか(データ量)を把握することが、安定したシステム運用の第一歩となります。
9. 初心者がRedisを学ぶ時に意識すべきこと
Redisは非常に奥が深いツールですが、最初からすべてを理解する必要はありません。 大切なのは、「Redisはメモリで動くから速い」、「メモリは有限なので管理が必要」、「キーと値のシンプルな組み合わせでできている」という3点をしっかり押さえることです。
普段、私たちがWEBサイトを閲覧して「表示が速いな」と感じる裏側には、こうしたRedisのようなデータベースが、メモリという限られた資源を一生懸命やりくりしながら支えているのです。
まずは自分のパソコンでRedisを動かしてみて、小さなデータを保存したり、有効期限をセットして消える様子を眺めたりすることから始めてみてください。実際に目に見える形でデータが動くのを確認するのが、上達への一番の近道です。