カテゴリ: データベース 更新日: 2026/03/15

Redis(レディス)をキャッシュとして使う基本ガイド!初心者でもわかる高速化の仕組み

Redisをキャッシュとして使うとは?基本的な考え方を解説
Redisをキャッシュとして使うとは?基本的な考え方を解説

先生と生徒の会話形式で理解しよう

生徒

「最近よく『Redis(レディス)』っていう言葉を聞くんですけど、これって何なんですか?」

先生

「Redisは、データをめちゃくちゃ速く出し入れできる『魔法のメモ帳』のようなものです。普通のデータベースが重い本棚だとしたら、Redisは机の上に置いた付箋(ふせん)のようなイメージですね。」

生徒

「速いのは嬉しいですけど、普通のデータベースと何が違うんですか?」

先生

「普通のデータベース(MySQLなど)はハードディスクという場所にデータを保存しますが、Redisは『メモリ』という場所に保存します。だから読み書きが圧倒的に速いんです。今日はその中でも一番有名な『キャッシュ』という使い方を学びましょう。」

1. Redisとは何か?なぜキャッシュが必要なの?

1. Redisとは何か?なぜキャッシュが必要なの?
1. Redisとは何か?なぜキャッシュが必要なの?

Redis(Remote Dictionary Server)は、オープンソースのデータ構造サーバーです。簡単に言うと、「超高速なデータベース」のことです。パソコンやスマートフォンでウェブサイトを見るとき、裏側ではデータベースから情報を探しています。しかし、利用者が増えると、データベースが「もう無理!」と悲鳴を上げて、サイトの表示が遅くなってしまいます。

そこで登場するのが、キャッシュ(Cache)という仕組みです。一度調べた情報を一時的に「覚えやすい場所」に置いておき、二回目からはそこからサッと取り出す。これがRedisの得意技です。例えば、料理のレシピを毎回分厚い本で調べるのではなく、よく使うレシピだけを冷蔵庫に貼っておくような感覚ですね。

用語解説:メモリとは?
パソコンの中で、一時的に作業内容を広げておく「作業机」のことです。ハードディスク(本棚)よりもはるかに速く読み書きできますが、電源を切ると中身が消えてしまうという特徴があります。

2. 基本的な考え方:キャッシュの仕組み

2. 基本的な考え方:キャッシュの仕組み
2. 基本的な考え方:キャッシュの仕組み

Redisをキャッシュとして使う場合、以下のような流れで動きます。

  1. ユーザーが「このデータを見せて!」とリクエストする。
  2. まず、Redis(高速なメモ帳)にそのデータがあるか確認する。
  3. あれば、そのデータをすぐに返す(爆速!)。
  4. なければ、普通のデータベース(本棚)に探しに行く。
  5. データベースから見つけたデータを、Redisにコピーして保存(キャッシュ)しておく。
  6. ユーザーにデータを返す。

こうすることで、次に同じリクエストが来たときには、重いデータベースを見に行かずに済みます。ウェブサイトの高速化には欠かせない技術です。

3. 【実践】Redisにデータを保存してみよう(SETとGET)

3. 【実践】Redisにデータを保存してみよう(SETとGET)
3. 【実践】Redisにデータを保存してみよう(SETとGET)

Redisは「キー(名前)」と「値(中身)」をセットで保存する、Key-Value Store(KVS)という形式を使います。まずは一番シンプルな、文字列を保存して取り出す方法を見てみましょう。

例えば、サイトの「お知らせ」メッセージをキャッシュに保存する場合を想定します。

保存する前の状態(空っぽ)


キー (Key) | 値 (Value)
-----------+-----------
(データなし)

データを保存するコマンド(SET)

Redisでは「SET」という命令を使って、キーと値を登録します。ここでは「notice」というキーに、お知らせの内容を保存します。


SET notice "本日はメンテナンスのため、22時に終了します。"

データを取得するコマンド(GET)

保存したデータを取り出すには「GET」を使います。


GET notice

実行結果


"本日はメンテナンスのため、22時に終了します。"

このように、名前(キー)を指定するだけで、中身(値)を瞬時に取り出すことができます。これがRedisの基本です。

4. 有効期限を設定する(EXPIRE)

4. 有効期限を設定する(EXPIRE)
4. 有効期限を設定する(EXPIRE)

キャッシュはずっと残しておけばいいわけではありません。古い情報がいつまでも残っていると、最新の情報が表示されなくなってしまいます。例えば、「10分間だけ有効なタイムセール情報」などを扱うときに便利なのが有効期限(EXPIRE)です。

Redisでは、データに「寿命」を設定できます。時間が経つと自動的に消えてくれるので、メモリがいっぱいになるのを防ぐことができます。

10秒間だけ有効なデータを保存する

「EX」というオプションを使うと、秒単位で期限を決められます。ここでは「token」というキーに、秘密のコードを10秒間だけ保存してみます。


SET token "SECRET_12345" EX 10

このコマンドを実行した直後に GET すると値が返ってきますが、10秒待ってから GET すると、データが消えて何も表示されなくなります。

10秒後の状態


GET token
(nil)

※「(nil)」というのは、プログラミングの世界で「何もないよ」という意味です。自動で掃除してくれるので、とても便利ですね。

5. キャッシュの活用例:ランキング情報の保存

5. キャッシュの活用例:ランキング情報の保存
5. キャッシュの活用例:ランキング情報の保存

次に、もう少し複雑な例を見てみましょう。ウェブサイトでよく見る「人気記事ランキング」などは、計算に時間がかかるため、Redisにキャッシュしておくのに最適です。

まず、元のデータベース(MySQLなど)に保存されている、記事ごとのアクセス数データを見てみましょう。

元のデータベース(記事テーブル:articles)


id | title            | views | category
---+------------------+-------+----------
1  | Redis入門        | 1500  | 技術
2  | SQLの基本        | 1200  | 技術
3  | 初心者のパソコン | 800   | 生活
4  | 美味しい珈琲     | 2000  | 趣味
5  | 旅行の持ち物     | 950   | 生活

このテーブルから「アクセス数(views)が多い順」に並べ替えて表示するのは、データが数万件になると時間がかかります。そこで、ランキングの結果をまるごとRedisにキャッシュします。

ランキング結果をJSON形式でキャッシュ保存

「ranking_top3」というキーに、1位から3位までのデータをまとめて保存します。


SET ranking_top3 "[{'id':4, 'title':'美味しい珈琲'}, {'id':1, 'title':'Redis入門'}, {'id':2, 'title':'SQLの基本'}]"

Redis内のデータ状態


キー (Key)      | 値 (Value)
----------------+--------------------------------------------------------------
ranking_top3    | [{'id':4, 'title':'美味しい珈琲'}, {'id':1, 'title':'Redis入門'}, ...]
notice          | 本日はメンテナンスのため、22時に終了します。

これで、トップページを表示するたびに重いデータベースに計算をさせなくても、Redisから「ranking_top3」を呼び出すだけで、一瞬でランキングが表示できるようになります。

6. Redisを導入するメリットと注意点

6. Redisを導入するメリットと注意点
6. Redisを導入するメリットと注意点

ここまで読んで、「全部Redisに入れればいいんじゃない?」と思ったかもしれません。しかし、Redisにはメリットと、気をつけるべきポイントがあります。

メリット(得意なこと)
  • 圧倒的な速さ: ミリ秒以下の速さで応答します。
  • サーバーの負荷軽減: メインのデータベースを守ります。
  • 多様なデータ形式: 文字だけでなく、リストやセットも扱えます。
注意点(苦手なこと)
  • メモリ容量の制限: メモリは高価なので、大量の保存には向きません。
  • データの消失: 電源断などでデータが消える可能性があります(設定によります)。
  • 情報の鮮度: キャッシュが古いと、間違った情報を表示してしまいます。

7. どんな時にキャッシュを使うべき?

7. どんな時にキャッシュを使うべき?
7. どんな時にキャッシュを使うべき?

「キャッシュ」を使うべき代表的なシーンは以下の通りです。

  • 何度も同じ質問が来るデータ: サイト設定、人気記事、商品カテゴリー一覧など。
  • 計算が大変なデータ: ランキング、合計金額の集計、複雑な検索結果など。
  • 変更が少ないデータ: ユーザーのプロフィール情報、都道府県リストなど。

逆に、銀行の残高や注文履歴など、「絶対に消えてはいけない」「常に最新である必要がある」データは、まず普通のデータベース(MySQLやPostgreSQL)に保存し、補助としてRedisを使うのが一般的です。

Redisを使いこなせるようになると、あなたが作るアプリやウェブサイトは、驚くほどサクサク動くようになります。まずは「SET」と「GET」という、この二つの魔法の言葉を覚えるところからスタートしましょう!

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
New1
Ruby
Rubyの文法超入門:式と文・endの役割をやさしく解説
New2
Rails
Nodeは本当に不要?Railsのimportmap最小構成とjsbundling構成の違いと選び方
New3
Rails
Rails開発で使うデータベースの選び方とSQLite・MySQL・PostgreSQLの初期設定
New4
Ruby
Ruby環境構築の最終チェック!セットアップ失敗あるあると確認リスト
人気記事
No.1
Java&Spring記事人気No1
Rails
Railsメール確認(confirmable)の実装手順を完全ガイド!初心者でもわかる有効化リンクと期限設定
No.2
Java&Spring記事人気No2
Ruby
OpenSSL関連エラーの直し方を完全解説!証明書・ビルドオプション・brew対策まとめ
No.3
Java&Spring記事人気No3
Ruby
RubyのEnumerable完全解説!cycle・zipで繰り返しの達人になろう
No.4
Java&Spring記事人気No4
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.5
Java&Spring記事人気No5
Ruby
プロキシ環境でも安心!社内ネットワーク下でのRuby gemインストール完全ガイド【SSL対応も解説】
No.6
Java&Spring記事人気No6
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.7
Java&Spring記事人気No7
Rails
asdfで複数言語を一元管理:Ruby/Node/psql をまとめてセットアップ
No.8
Java&Spring記事人気No8
Ruby
Rubyのany? all? none? one? を完全攻略!条件判定を劇的に短く書く方法