Redis
公式サイトRedisとは
Redisは、データをディスクではなく主にメモリ上に置いて読み書きする、キーと値の組み合わせで管理するデータストアです。MySQLのような表形式のデータベースに比べて構造は単純ですが、そのぶん応答が非常に速いのが特徴です。一時的なデータを短時間で出し入れする用途、たとえばログイン状態の保持、ページ表示結果の一時保存(キャッシュ)、順番待ちの処理一覧(キュー)などに広く使われています。Laravelをはじめ多くのフレームワークが標準で対応しています。
弊社が採用する理由
弊社では、MySQLを中心としたLAMP/LEMP構成の中で、Redisを「速さが必要な一時データ」の置き場として補助的に採用しています。たとえば、ログイン状態の管理や、集計に時間がかかる画面の表示結果を一時的に保存する用途です。こうした処理をMySQLだけで行うと、アクセスが集中したときにデータベースの負荷が上がり、システム全体が遅くなることがあります。Redisを間に挟むことで、本来のデータはMySQLに安全に置いたまま、応答速度だけを改善できます。また、メール送信や帳票生成のように時間のかかる処理を裏側で順番に実行する仕組みにも利用しています。すべてのシステムに必要なわけではなく、規模や要件に応じて「必要になった時点で追加する」判断をしています。
向いている案件
- ログイン状態(セッション)の保持
- 表示に時間がかかるページやデータのキャッシュ
- メール送信や帳票作成など、時間のかかる処理の順番待ち管理
- アクセス集中時のデータベース負荷の軽減
保守・移行の観点
Redisはメモリ上で動作するため、サーバーのメモリ使用量を継続的に監視することが運用の中心になります。保存するデータには有効期限を設定し、不要なデータが溜まり続けない設計にします。キャッシュとして使う場合は、Redisが停止してもシステムが正しく動く(遅くなるだけで壊れない)構成にしておくことが重要です。バージョンについては、他のソフトウェアと同様にサポートが継続している版を選び、OSの更新に合わせて移行します。外部からアクセスできない設定にし、認証を有効にするなど、ネットワーク面の設定もセキュリティの観点から確認します。
組み合わせて使う技術
よくあるご質問
小規模なシステムでもRedisは必要ですか?
必ずしも必要ではありません。利用者が少なく処理も軽い場合はMySQLだけで十分です。アクセス増加や処理の重さが課題になった時点で追加する、という進め方をおすすめしています。
Redisにデータを置くと消えてしまうことはありますか?
メモリ上のデータが中心のため、サーバー再起動などで失われる可能性はあります。そのため弊社では、失われても再生成できる一時データに用途を限定し、重要なデータはMySQLに保存する設計にしています。
関連するサービス
関連する開発ガイド
- 中小企業のWebシステムに最低限必要なセキュリティ対策専任の担当者がいない中小企業でも押さえておきたい Web システムのセキュリティ対策を、SSL/TLS・認証と多要素認証・権限の最小化・アップデート・バックアップ・ログ・個人情報の順に優先度をつけて整理します。
- レンタルサーバー・VPS・クラウドの違いと選び方レンタルサーバー・VPS・クラウドの3種を、管理範囲・自由度・運用負荷の観点で比較し、中小企業のWebサイトや業務システムにどれが合うかを判断する考え方と、保守との関係を解説します。
- 納品後の保守・運用で何が必要かシステムは納品後も動かし続ける必要があります。監視、バックアップと復元テスト、OS・ミドルウェア・CMSのアップデート、ステージングでの検証、保守契約の範囲という基本を整理します。
関連用語: LAMP/LEMP、API、保守運用、ステージング環境
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開