カテゴリ: CodeIgniter 更新日: 2026/04/05

CodeIgniterでRedisキャッシュを導入!初心者でも速度爆速にする設定方法

CodeIgniterでRedisを使ったキャッシュを導入する方法
CodeIgniterでRedisを使ったキャッシュを導入する方法

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

生徒

「CodeIgniterで作ったサイトの表示が遅い気がします。もっと速くする方法はありますか?」

先生

「そんな時は『キャッシュ』という仕組みを使うと良いですよ。特に『Redis(レディス)』という道具を使うと、驚くほど速くなります。」

生徒

「レディス?難しそうですが、私にも設定できますか?」

先生

「設定自体はとてもシンプルです。まずはキャッシュの基本から一緒に学んでいきましょう!」

1. キャッシュとRedisの基本を知ろう

1. キャッシュとRedisの基本を知ろう
1. キャッシュとRedisの基本を知ろう

プログラミングの世界でよく聞くキャッシュとは、一度計算した結果や、データベースから読み込んだ情報を「一時的にメモしておく場所」のことです。例えば、あなたが何度も同じ料理のレシピを本で調べるのは大変ですよね?一度作ったレシピをメモ用紙に書いて冷蔵庫に貼っておけば、次からは本を開かずにすぐ料理が作れます。これがキャッシュの仕組みです。

そして、今回の主役であるRedis(レディス)は、そのメモ用紙を「ものすごいスピードで読み書きできる特別なノート」のようなものです。パソコンのメモリという、非常に動作が速い場所にデータを保存するため、通常のファイルに保存するよりも圧倒的に高速に動作します。

PHPの人気フレームワークであるCodeIgniter(コードイグナイター)は、このRedisと非常に相性が良く、簡単な設定だけでWebサイトのパフォーマンスを向上させることができます。初心者の方でも、一つずつ手順を踏めば必ず導入できるので安心してくださいね。

2. Redisを導入するメリット

2. Redisを導入するメリット
2. Redisを導入するメリット

なぜ多くのエンジニアがRedisを使うのでしょうか。それは、単に速いだけでなく、パソコンやサーバーへの負担を減らすことができるからです。通常、Webサイトが表示されるときは、裏側でデータベース(情報の倉庫)に何度も問い合わせを行います。しかし、アクセスが集中すると、この倉庫がパンクしてサイトが動かなくなってしまいます。

ここでRedisが登場します。Redisはインメモリデータベースと呼ばれ、すべてのデータをパソコンの脳に近い「メモリ」で管理します。ハードディスクに書き込む作業がないため、読み込み速度がミリ秒単位で短縮されます。これにより、ユーザーはストレスなくサイトを閲覧でき、Googleなどの検索エンジンからも「このサイトは速くて優秀だ」と評価されやすくなるのです(これをSEO対策と呼びます)。

3. CodeIgniterの設定ファイルを準備する

3. CodeIgniterの設定ファイルを準備する
3. CodeIgniterの設定ファイルを準備する

それでは、具体的にCodeIgniterでRedisを使うための準備をしましょう。まずは、設定ファイルを書き換える必要があります。初心者の方にとって「設定ファイル」と聞くと難しく感じるかもしれませんが、決まった場所に決まった文字を書き込むだけなので、パズルのようなものです。

編集するファイルは app/Config/Cache.php です。このファイルの中に、キャッシュを何で動かすか(ハンドラ)を指定する場所があります。デフォルトでは「file」になっていることが多いですが、ここを「redis」に変更します。まずは、設定の書き方の例を見てみましょう。


// app/Config/Cache.php の中身をイメージしたコード
public $handler = 'redis';

public $redis = [
    'host'     => '127.0.0.1',
    'password' => null,
    'port'     => 6379,
    'timeout'  => 0,
    'database' => 0,
];

上記のコードにある host は、Redisが動いている場所の住所のようなものです。自分のパソコンで動かしている場合は 127.0.0.1 という数字をよく使います。port6379 は、Redis専用の入り口番号だと思ってください。

4. 実際にデータを保存してみよう

4. 実際にデータを保存してみよう
4. 実際にデータを保存してみよう

設定ができたら、次はプログラムの中で実際にデータを保存してみましょう。CodeIgniterでは cache() という便利な機能(関数)が用意されています。これを使えば、誰でも簡単にRedisへデータを預けることができます。

例えば、あなたの名前を「お気に入り」として1時間だけ保存するプログラムを書いてみます。保存するときは save という命令を使います。第一引数に「ラベル(名前)」、第二引数に「保存したい中身」、第三引数に「何秒間保存するか」を指定します。3600秒は1時間のことですね。


// データをRedisに保存する
cache()->save('user_name', 'たろう', 3600);

echo 'データを保存しました!';

このコードを実行すると、Redisという高速メモ帳に「user_name は たろう です」と書き込まれます。たったこれだけで、次回からはデータベースを見に行かなくても、Redisから瞬時に名前を取り出せるようになります。

5. 保存したデータを取り出す方法

5. 保存したデータを取り出す方法
5. 保存したデータを取り出す方法

保存したデータを取り出すときは get という命令を使います。これは、先ほど付けた「ラベル」を指定するだけで、中身を返してくれる仕組みです。もしメモが存在しない場合は、何もないことを意味する null という値が返ってきます。

以下の例では、もし保存された名前があれば表示し、なければ「データがありません」と表示するプログラムです。条件分岐の if文 と組み合わせて使うのが一般的です。


// Redisからデータを取り出す
$name = cache()->get('user_name');

if ($name) {
    echo 'こんにちは、' . $name . 'さん!';
} else {
    echo 'データが見つかりませんでした。';
}

実行結果は以下のようになります。もし事前に「たろう」を保存していれば、名前が表示されます。このように、一度保存したものを必要な時にサッと取り出せるのが、キャッシュの最大の魅力です。


こんにちは、たろうさん!

6. 不要になったキャッシュを消去する

6. 不要になったキャッシュを消去する
6. 不要になったキャッシュを消去する

キャッシュは便利ですが、ずっと残しておくと困ることもあります。例えば、ユーザーが名前を変更したのに、古い名前がキャッシュに残っていると、画面に表示される情報が古くなってしまいます。そんな時は、特定のキャッシュを消す delete 命令や、すべてのキャッシュを空にする clean 命令を使います。

以下のコードは、特定のラベルのデータを削除する例です。お掃除もプログラミングの大切な要素です。整理整頓を心がけることで、バグ(プログラムのミス)の少ないシステムを作ることができます。


// 特定のデータを削除する
cache()->delete('user_name');

// すべてのキャッシュをまとめて消去する
// cache()->clean();

echo 'キャッシュをきれいに削除しました!';

この操作を行うと、Redisの中にある「user_name」というメモが破棄されます。次に get を行ってもデータは見つからなくなるため、最新の情報をデータベースから取得し直すきっかけを作ることができます。

7. Redis導入時に初心者が注意すべきポイント

7. Redis導入時に初心者が注意すべきポイント
7. Redis導入時に初心者が注意すべきポイント

ここまで順調に進んできましたが、一つだけ注意点があります。それは「Redis自体がインストールされているか」という点です。CodeIgniterの設定をどれだけ正しく書いても、サーバーの中にRedisというソフトが動いていなければエラーになってしまいます。

もし自分でパソコンにインストールするのが難しい場合は、レンタルサーバーなどの管理画面で「Redisを利用する」といったチェックボタンを探してみてください。また、PHPからRedisを操作するための「phpredis」という拡張機能が必要になることもあります。これは、PHPとRedisが会話するための「通訳さん」のような存在です。

最初は「なんだか難しそう」と感じるかもしれませんが、エラーメッセージが出たときは、その文章をそのまま検索してみてください。世界中のエンジニアが同じ悩みを通ってきているので、解決策は必ず見つかります。一歩ずつ、確実に進んでいきましょう。

8. 実践的な使い方:ページの表示を速くする

8. 実践的な使い方:ページの表示を速くする
8. 実践的な使い方:ページの表示を速くする

最後に、もう少し実践的な例を紹介します。Webサイトで一番時間がかかるのは「複雑な計算」や「大量のデータ取得」です。これらをまるごとキャッシュしてしまいましょう。例えば、ニュース一覧を表示する際に、毎回データベースを見に行くのではなく、5分間だけRedisに保存しておく手法です。

これを行うことで、1秒間に100人がアクセスしてきても、データベースにアクセスするのは5分に1回だけで済みます。残りの時間はすべてRedisが高速に返答してくれるため、サーバーが重くなるのを防ぐことができます。


// ニュース一覧をキャッシュする高度な例
$news_list = cache()->get('top_news');

if (! $news_list) {
    // キャッシュがない場合のみ、重い処理(例:DB取得)を行う
    // $news_list = $newsModel->findAll();
    $news_list = '最新ニュースの記事データ一式'; 
    
    // 300秒(5分)保存する
    cache()->save('top_news', $news_list, 300);
}

echo $news_list;

このように、「無ければ作る、あれば使う」という流れを覚えるだけで、あなたの作るWebアプリケーションの品質はプロレベルに近づきます。Redisを活用して、ユーザーにとって心地よい爆速サイトを目指してみてください。

カテゴリの一覧へ
新着記事
New1
PHP
PHPの文字列型(string)の基本を完全解説!引用符の違いとヒアドキュメントの使い方
New2
Symfony
Symfonyで複数フィールドを同時にバリデーションする方法を徹底解説!初心者にもやさしく解説
New3
Laravel
Laravelで--seedオプションを使ってマイグレーション後にSeederを実行する方法!初心者でもわかる初期データ登録
New4
Laravel
Laravelのconfig()関数で設定値を取得・変更する方法を完全解説!初心者でもわかる設定ファイルの使い方
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのServicesクラスとは?初心者向け完全ガイド
No.2
Java&Spring記事人気No2
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.3
Java&Spring記事人気No3
CodeIgniter
CodeIgniterで独自サービスクラスを作成する方法を徹底解説!初心者向け完全ガイド
No.4
Java&Spring記事人気No4
PHP
PHPの整数型(int)をマスター!範囲や進数表記、型キャストの方法を初心者向けに解説
No.5
Java&Spring記事人気No5
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniter 4のインストール方法まとめ(Composer・手動)
No.7
Java&Spring記事人気No7
Laravel
Laravelでマイグレーションをロールバック・再実行する方法をやさしく解説!
No.8
Java&Spring記事人気No8
Laravel
Laravelで外部キー制約を設定する方法(foreign, onDelete)をやさしく解説!