はい、承知いたしました。Redisのインストールに関する完全ガイド記事を約5000語の詳細な説明を含めて記述します。
Redisのインストール完全ガイド – 手順を分かりやすく紹介
はじめに
オープンソースのインメモリデータ構造ストアであるRedisは、その高速性と柔軟性から、現代のアプリケーション開発において不可欠なツールとなっています。キャッシュ、セッションストア、メッセージキュー、リアルタイム分析など、幅広い用途で利用されています。しかし、いざ使おうと思ったときに最初の関門となるのが「インストール」です。
この記事は、Redisのインストール方法を、Linux、macOS、Windowsといった主要なプラットフォームごとに、初心者の方でも分かりやすいように詳細に解説する完全ガイドです。各プラットフォームでの最も一般的なインストール方法に加えて、ソースコードからのビルドや、Windowsにおける推奨される方法(WSL)についても網羅します。
この記事を読むことで、以下のことが理解できます。
- Redisとは何か、その基本的な特徴と用途。
- Redisをインストールするために必要な環境と準備。
- Linux、macOS、Windows (WSL) それぞれでの具体的なインストール手順。
- ソースコードからRedisをビルドする方法。
- インストール後のRedisの起動、停止、および基本的な設定方法。
- Redisを利用する上で重要なセキュリティ設定。
- インストール時によく発生する問題とその解決方法。
これからRedisを使ってみたいと考えている方、またはインストールでつまずいた経験がある方にとって、この記事が確実な第一歩となることを願っています。
Redisとは何か?なぜインストールするのか?
Redis (Remote Dictionary Server) は、キーバリュー型のインメモリデータ構造ストアです。従来のデータベースとは異なり、データを主にメモリ上に保持するため、非常に高速な読み書きが可能です。単なるキーと値のペアだけでなく、文字列(String)、リスト(List)、セット(Set)、ソート済みセット(Sorted Set)、ハッシュ(Hash)、ビットマップ(Bitmap)、HyperLogLog、ストリーム(Stream)といった多様なデータ構造をサポートしている点が大きな特徴です。
Redisの主な特徴:
- 高速性: データをメモリに保持するため、ディスクI/Oのボトルネックがなく、ミリ秒以下の応答速度を実現します。
- 豊富なデータ構造: 多様なデータ型をネイティブにサポートしており、様々な要件に対応できます。
- 永続性: メモリ上のデータは揮発性ですが、RDB (Redis Database) スナップショットやAOF (Append Only File) ログといった機能により、データをディスクに永続化できます。これにより、サーバーがクラッシュした場合でもデータを復旧可能です。
- アトミック操作: 多くのコマンドがアトミックに実行されるため、並行処理においてデータの一貫性を保ちやすいです。
- Pub/Sub機能: メッセージキューシステムとしても利用できます。
- スクリプト機能: Luaスクリプトによるサーバーサイドでの複雑な処理が可能です。
- 高可用性・分散: Sentinelによる自動フェイルオーバーや、Clusterによるデータの自動シャーディングをサポートしています。
Redisの主なユースケース:
- キャッシュ: 最も一般的な用途の一つです。データベースへのアクセス負荷を軽減し、アプリケーションの応答速度を向上させます。Webサイトのページキャッシュ、データベースクエリの結果キャッシュ、APIレスポンスのキャッシュなどに利用されます。
- セッションストア: Webアプリケーションのユーザセッション情報を格納するために使用されます。分散環境でもセッション情報を共有しやすく、スケーラビリティが向上します。
- メッセージキュー: Pub/Sub機能やListデータ型を利用して、非同期処理やコンポーネント間の疎結合を実現します。バックグラウンドジョブのキューイングなどに使われます。
- リアルタイム分析: リアルタイムの集計処理やランキング表示などに利用されます。Sorted Setを使ったリーダーボードなどが典型的な例です。
- レートリミッター: ある期間内のリクエスト数をカウントし、制限するために使われます。
- 一時的なデータストア: 有効期限付きのデータを扱うのに適しています(例: ワンタイムパスワード、一時的な認証トークン)。
これらの強力な機能とパフォーマンスを活用するためには、まずお使いのシステムにRedisサーバーをインストールする必要があります。インストール方法はOSや用途によっていくつか選択肢がありますが、基本的にはRedisサーバープログラムをシステム上に配置し、適切に起動・管理できるように設定する作業となります。
この記事では、それぞれの環境で最も推奨される方法や、より高度な制御が必要な場合のソースコードからのビルド方法など、網羅的に解説します。
インストール前の準備
インストール作業を開始する前に、いくつか準備しておくべきことがあります。
-
動作環境の確認:
- OS: Redisは主要なオペレーティングシステム(Linux、macOS、BSD、Windows WSLなど)で動作します。使用しているOSとそのバージョンを確認してください。特に古いOSバージョンでは、Redisの最新版をインストールできない場合があります。
- ハードウェア: Redisはインメモリデータストアであるため、搭載しているメモリ容量が重要です。格納したいデータ量に応じて、十分なメモリを備えたマシンを用意してください。CPUやディスク容量も重要ですが、多くの場合メモリがボトルネックになります。開発やテスト目的であれば最小要件で十分ですが、本番環境では格納データ量 + OSなどが使用するメモリ + Redisが内部で使用するオーバーヘッド(約10-15%)を考慮したメモリが必要です。
- ネットワーク: RedisはデフォルトでTCPポート6379を使用します。このポートがファイアウォールなどでブロックされていないか確認してください。
-
インストールの種類の選択:
Redisのインストール方法はいくつかあります。それぞれの特徴を理解し、自身の環境や目的に合った方法を選択します。- パッケージマネージャー: OSに付属するパッケージ管理システム(apt, yum/dnf, Homebrewなど)を使用する方法です。最も簡単かつ推奨される方法です。依存関係の管理やアップデートが容易ですが、インストールされるRedisのバージョンが最新ではない場合があります。
- ソースコードからのビルド: Redisの公式サイトからソースコードをダウンロードし、自分でコンパイルしてインストールする方法です。常に最新バージョンを利用できます。ビルドオプションを指定することでカスタマイズも可能ですが、パッケージマネージャーを使うより手間がかかり、依存関係の解決やビルド環境の準備が必要です。
- Dockerコンテナ: Dockerを使用している場合、Redisの公式Dockerイメージを利用するのが非常に容易です。環境の分離が図れ、セットアップも迅速ですが、Dockerの知識が必要です。
- Microsoftによる公式ビルド (Windows): 過去にはMicrosoftがWindows向けの公式ビルドを提供していましたが、現在は開発・提供が終了しています。非公式のビルドが存在しますが、本番環境での利用は推奨されません。
この記事では、最も一般的で推奨される「パッケージマネージャーを使用する方法」を中心に解説し、より詳細な制御が必要な場合の「ソースコードからのビルド」、そしてWindowsユーザー向けの「WSLを使用したインストール」についても詳しく説明します。Dockerについては、別の専門的な記事の対象となるため、ここでは触れません。
-
システムのアップデート:
インストール作業を始める前に、システムのパッケージリストを更新し、既存のパッケージを最新の状態にしておくことを強く推奨します。これにより、依存関係の問題を防ぎ、セキュリティパッチが適用された最新の環境で作業できます。- Debian/Ubuntu:
sudo apt update && sudo apt upgrade
- RHEL/CentOS/Fedora:
sudo yum update
またはsudo dnf update
- macOS (Homebrew):
brew update && brew upgrade
- Debian/Ubuntu:
-
必要な依存関係の確認・インストール:
ソースコードからビルドする場合や、特定のOS環境では、Redisのビルドや実行に必要なツールやライブラリを事前にインストールしておく必要があります。これには、Cコンパイラ (gcc
)、make
、tcl
(テスト実行用) などが含まれます。パッケージマネージャーを使用する場合でも、Redisパッケージの依存関係として自動的にインストールされることが多いですが、念のため頭に入れておくとトラブルシューティングに役立ちます。
これらの準備が整ったら、いよいよ各プラットフォームでのインストールに進みます。
Linuxへのインストール
Linux環境では、パッケージマネージャーを使用する方法と、ソースコードからビルドする方法が一般的です。
1. パッケージマネージャーを使用する方法
最も簡単で推奨される方法です。OSのディストリビューションによって使用するコマンドが異なります。
a) Debian/Ubuntu系 (apt
)
DebianやUbuntu、Linux Mintなどのディストリビューションでは、apt
コマンドを使用します。
-
パッケージリストの更新:
まず、ローカルのパッケージリストを最新の状態に更新します。bash
sudo apt updateこれにより、新しいパッケージ情報やアップデート情報が取得されます。
-
Redisサーバーのインストール:
次に、redis-server
パッケージをインストールします。bash
sudo apt install redis-serverこのコマンドは、
redis-server
パッケージとその依存関係にあるパッケージをダウンロードし、インストールします。途中でディスク使用量の確認と続行の確認を求められることがありますので、y
を入力してEnterを押してください(-y
オプションをつけると確認なしで進みます)。 -
インストール後の確認:
インストールが完了すると、通常はRedisサーバーが自動的に起動し、systemdサービスとして登録されます。サービスの状態を確認するには、以下のコマンドを実行します。bash
systemctl status redis-server出力の
Active:
の部分がactive (running)
となっていれば、サーバーは正常に起動しています。さらに、Redisクライアント (
redis-cli
) を使ってサーバーに接続し、疎通確認をしてみましょう。bash
redis-cliこれはデフォルトでローカルホストのポート6379に接続します。プロンプトが
127.0.0.1:6379>
に変わったら、以下のコマンドを入力します。redis-cli
pingサーバーが応答すれば、
PONG
と表示されます。これで正常に接続できていることが確認できます。終了するにはexit
と入力します。 -
Redisサービスの管理:
systemdを使っている場合、Redisサービスの起動、停止、再起動、自動起動設定は以下のコマンドで行います。- 起動:
sudo systemctl start redis-server
- 停止:
sudo systemctl stop redis-server
- 再起動:
sudo systemctl restart redis-server
- OS起動時に自動的に起動するように設定:
sudo systemctl enable redis-server
- 自動起動設定を解除:
sudo systemctl disable redis-server
設定ファイルは通常
/etc/redis/redis.conf
に配置されます。変更を加えた場合は、サービスの再起動が必要です。 - 起動:
b) RHEL/CentOS/Fedora系 (yum
/dnf
)
RHEL、CentOS、Fedora、Rocky Linux、AlmaLinuxなどのディストリビューションでは、yum
または新しい dnf
コマンドを使用します。Fedora 22以降およびRHEL 8以降ではdnf
が推奨されています。
-
パッケージリストの更新:
システムのパッケージ情報を更新します。“`bash
sudo yum update # CentOS/RHEL 7以前または
sudo dnf update # Fedora, CentOS/RHEL 8以降
“` -
Redisサーバーのインストール:
Redisパッケージをインストールします。EPEL (Extra Packages for Enterprise Linux) リポジトリが必要な場合があります。もしEPELが有効になっていない場合は、以下のコマンドで有効にしてください(CentOS/RHELの場合)。“`bash
sudo yum install epel-release # CentOS/RHEL 7以前または
sudo dnf install epel-release # CentOS/RHEL 8以降
“`EPELリポジトリが有効になったら、Redisをインストールします。
“`bash
sudo yum install redis # CentOS/RHEL 7以前または
sudo dnf install redis # Fedora, CentOS/RHEL 8以降
“` -
Redisサービスの有効化と起動:
インストール後、手動でサービスを有効化し、起動する必要があります(ディストリビューションによっては自動起動する場合もありますが、明示的に行うのが確実です)。bash
sudo systemctl enable redis # OS起動時に自動起動するように設定
sudo systemctl start redis # Redisサービスを起動 -
インストール後の確認:
サービスのステータスを確認します。bash
systemctl status redisActive:
がactive (running)
となっていればOKです。redis-cli
で接続確認も行います。bash
redis-cli pingPONG
と表示されれば成功です。 -
Redisサービスの管理:
systemdを使っている場合、管理コマンドは以下の通りです(Debian/Ubuntu系と同様ですが、サービス名がredis
であることが多いです)。- 起動:
sudo systemctl start redis
- 停止:
sudo systemctl stop redis
- 再起動:
sudo systemctl restart redis
設定ファイルは通常
/etc/redis.conf
に配置されます。 - 起動:
2. ソースコードからビルドする方法
パッケージマネージャーで提供されているバージョンよりも新しいバージョンを使いたい場合や、特定のビルドオプションを有効にしたい場合に、ソースコードからビルドする方法を選択します。この方法はより柔軟ですが、手順が多くなります。
a) 必要なツールのインストール
Redisをビルドするには、Cコンパイラや make
コマンドが必要です。また、make test
を実行するにはTclが必要です。
-
Debian/Ubuntu:
bash
sudo apt update
sudo apt install build-essential tcl
build-essential
パッケージにはgcc
,g++
,make
など、ビルドに必要な基本的なツールが含まれています。 -
RHEL/CentOS/Fedora:
bash
sudo yum groupinstall "Development Tools" # CentOS/RHEL 7以前
sudo yum install tcl
# または
sudo dnf groupinstall "Development Tools" # CentOS/RHEL 8以降
sudo dnf install tcl
b) Redisソースコードのダウンロード
Redisの公式サイト (https://redis.io/download) から最新のソースコードをダウンロードします。バージョン番号を確認し、以下のコマンドでダウンロードします。ここでは最新の安定版(例:7.2.4)をダウンロードする例を示します。
“`bash
cd /tmp # 一時ディレクトリに移動
wget http://download.redis.io/releases/redis-7.2.4.tar.gz
または curl -O http://download.redis.io/releases/redis-7.2.4.tar.gz
“`
ダウンロードしたアーカイブファイルを解凍します。
bash
tar xzf redis-7.2.4.tar.gz
cd redis-7.2.4
c) ビルド
解凍したディレクトリに移動したら、make
コマンドを実行してビルドします。
bash
make
デフォルトでは、メモリ割り当てに Jemalloc を使用します。これは多くのワークロードで高いパフォーマンスを発揮します。もし Jemalloc が利用できない環境や、libc の malloc を明示的に使用したい場合は、以下のコマンドでビルドします。
bash
make MALLOC=libc
ビルド中にエラーが発生した場合は、必要な依存関係(特に build-essential
や “Development Tools” グループ)がインストールされているか確認してください。
d) テストの実行 (推奨)
ビルドが成功したら、make test
コマンドを実行してRedisのテストスイートを実行することを強く推奨します。これにより、ビルドされたバイナリが環境で正しく動作するかを確認できます。テストにはTclが必要です。
bash
make test
テストは数分かかる場合があります。全てのテストにパスすれば、安心してインストールに進めます。もしテストが失敗する場合は、環境固有の問題やビルドの問題の可能性があります。エラーメッセージを確認し、必要に応じてRedisコミュニティや公式ドキュメントを参照してください。
e) インストール
テストが成功したら、make install
コマンドでRedisをシステムにインストールします。デフォルトでは、redis-server
, redis-cli
, redis-sentinel
などの実行ファイルが /usr/local/bin
にコピーされます。
bash
sudo make install
デフォルトのインストールパスを変更したい場合は、make PREFIX=/path/to/install install
のように PREFIX
オプションを指定します。
f) 設定ファイルとサービスの準備
make install
は実行ファイルをインストールしますが、設定ファイルやサービス管理のためのファイルは自動的には設定しません。これらは手動で設定する必要があります。
-
設定ファイルの配置:
ソースディレクトリにあるredis.conf
ファイルを、システムの設定ファイルディレクトリ(例:/etc/redis/
)にコピーします。bash
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/必要に応じて、
/etc/redis/redis.conf
ファイルを編集して設定を変更します(後述の「インストール後の初期設定」を参照)。 -
実行ユーザーとグループの作成:
セキュリティ上の理由から、Redisはrootユーザーではなく、専用のユーザー(例:redis
)で実行するのが一般的です。システムユーザーを作成します。bash
sudo adduser --system --group redis
(システムやadduserのバージョンによってはオプションが異なる場合があります) -
データディレクトリとログディレクトリの作成:
RDBファイルやAOFファイル、ログファイルを格納するディレクトリを作成し、Redisユーザーに適切な権限を与えます。設定ファイル (redis.conf
) のdir
およびlogfile
設定を確認し、それに応じたディレクトリを作成・設定します。“`bash
sudo mkdir /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis # 必要に応じて適切な権限を設定ログファイルを /var/log/redis に出力する場合
sudo mkdir /var/log/redis
sudo chown redis:redis /var/log/redis
sudo chmod 770 /var/log/redis
“`/etc/redis/redis.conf
を編集し、dir
を/var/lib/redis
に、logfile
を/var/log/redis/redis-server.log
などに設定します。また、daemonize yes
を設定してバックグラウンドで実行するようにします。 -
Systemdサービスユニットファイルの作成 (推奨):
RedisをSystemdで管理できるように、サービスユニットファイルを作成します。これにより、パッケージマネージャーでインストールした場合と同様にsystemctl
コマンドでRedisを管理できるようになります。/etc/systemd/system/redis.service
のような名前でファイルを作成し、以下のような内容を記述します。“`ini
[Unit]
Description=Redis In-Memory Data Store
After=network.target[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
WorkingDirectory=/var/lib/redis
RuntimeCriticalStep=yes
Restart=always
RestartSec=5
TimeoutStopSec=10[Install]
WantedBy=multi-user.target
“`User
,Group
: Redisを実行するユーザーとグループを指定します。ExecStart
: Redisサーバーの実行ファイルと設定ファイルのパスを指定します。ExecStop
: サービス停止時に実行されるコマンドです。redis-cli shutdown
は gracefully に停止します。WorkingDirectory
: データファイルなどが保存されるディレクトリを指定します。Restart=always
: サービスが終了した場合に自動的に再起動するように設定します。
ファイルを保存したら、Systemdに設定を読み込ませて、サービスを有効化し、起動します。
bash
sudo systemctl daemon-reload # Systemd設定を再読み込み
sudo systemctl enable redis # OS起動時に自動起動するように設定
sudo systemctl start redis # Redisサービスを起動 -
インストール後の確認:
systemctl status redis
でサービスの起動状態を確認します。また、redis-cli ping
で接続確認も行います。
ソースコードからのビルドは手間がかかりますが、最新版の利用や詳細なカスタマイズが可能になります。本番環境で利用する場合は、Systemdサービスとして適切に設定し、自動起動やエラー時の再起動が行われるようにすることが重要です。
macOSへのインストール
macOSでは、Homebrewというパッケージマネージャーを利用するのが最も簡単で一般的な方法です。
Homebrewを使用する方法
Homebrewは、macOS上で様々なソフトウェアを容易にインストールできるパッケージマネージャーです。まだHomebrewをインストールしていない場合は、まずHomebrewをインストールします。
-
Homebrewのインストール:
ターミナルを開き、以下のコマンドを実行します。bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"このコマンドはHomebrewの公式サイトに記載されている最新のインストールスクリプトです。実行中にパスワード入力や、Command Line Tools for Xcodeのインストールを求められる場合があります。画面の指示に従って進めてください。インストール後、パスが通っているか確認するために、指示があれば
eval "$(/opt/homebrew/bin/brew shellenv)"
(M1/M2 Macの場合) またはeval "$(/usr/local/bin/brew shellenv)"
(Intel Macの場合) を実行し、さらにシェル設定ファイル (.zshrc
,.bash_profile
など) に追加する設定を行ってください。インストールが完了したら、
brew doctor
コマンドを実行して、問題がないか確認しておくと良いでしょう。 -
Redisのインストール:
Homebrewがインストールされていれば、Redisのインストールは非常に簡単です。bash
brew install redisこのコマンドだけで、HomebrewがRedisとその依存関係をダウンロード、ビルド(必要であれば)、インストールしてくれます。
-
インストール後の確認:
インストールが完了したら、redis-cli
コマンドが利用できるようになります。サーバーへの接続確認を行います。bash
redis-cli pingデフォルトでは、HomebrewでインストールされたRedisはバックグラウンドサービスとして自動起動しません。手動で起動する必要があります。
-
Redisサーバーの手動起動:
ターミナルで以下のコマンドを実行します。bash
redis-serverこれにより、フォアグラウンドでRedisサーバーが起動します。別のターミナルウィンドウを開き、
redis-cli ping
を実行してPONG
が返ってくるか確認してください。サーバーを停止するには、サーバーが起動しているターミナルウィンドウでCtrl+C
を押します。 -
Redisサービスの管理 (自動起動設定):
Homebrewでは、brew services
コマンドを使って、RedisをmacOSのログイン項目やlaunchdサービスとして登録し、自動的に起動・管理することができます。-
自動起動設定と起動:
bash
brew services start redis
このコマンドは、HomebrewによってインストールされたRedisのplistファイルを~/Library/LaunchAgents/
ディレクトリにコピーし、launchctl
コマンドを使ってサービスとしてロードし、起動します。 -
停止:
bash
brew services stop redis -
再起動:
bash
brew services restart redis -
ステータス確認:
bash
brew services list
インストールされているサービスのリストが表示され、Redisのステータス(started
など)を確認できます。
-
-
設定ファイルの場所:
HomebrewでインストールされたRedisの設定ファイル (redis.conf
) は、通常/usr/local/etc/redis.conf
(Intel Mac) または/opt/homebrew/etc/redis.conf
(M1/M2 Mac) に配置されます。設定を変更した場合は、brew services restart redis
でRedisサーバーを再起動する必要があります。
Homebrewを使うことで、macOS上でのRedisインストールは非常に簡単に行えます。特にHomebrew Servicesを利用した自動起動設定は便利です。
Windowsへのインストール
かつてMicrosoftがWindows向けの公式ビルドを提供していましたが、これは開発が終了しています。現在、WindowsでRedisを使用する場合、以下の2つの方法が推奨されます。
- WSL (Windows Subsystem for Linux) を使用する (推奨): Windows上でLinux環境を動作させ、その中でLinux版のRedisをインストールする方法です。最も安定しており、Linuxの豊富なツールやドキュメントを利用できるため、Windowsユーザーにとって最も推奨される方法です。
- 非公式ビルドを使用する: Redisの公式からは提供されていませんが、コミュニティによってWindows向けの非公式ビルドが公開されています。手軽に試すことはできますが、安定性やセキュリティの面で保証がなく、本番環境での使用は推奨されません。
ここでは、推奨されるWSLを使用した方法を詳しく解説します。
WSL (Windows Subsystem for Linux) を使用する方法
WSLは、Windows上でLinuxの実行環境を提供する機能です。WSL2は仮想化技術を使用しており、高い互換性とパフォーマンスを提供します。WSL2をインストールし、その中にUbuntuなどのLinuxディストリビューションをセットアップし、そのLinux環境内でRedisをインストールします。
-
WSLのインストールと設定:
まず、お使いのWindowsバージョンがWSL2に対応しているか確認します(Windows 10 バージョン 1903以降、ビルド 18362以降)。WSLのインストール手順は、Windowsのバージョンや設定状況によって異なりますが、最近のWindows 10/11であれば、管理者としてPowerShellまたはコマンドプロンプトを開き、以下のコマンド一つでWSLとデフォルトのLinuxディストリビューション(通常はUbuntu)をインストールできます。powershell
wsl --installこのコマンドは、WSLを有効にし、WSL2をデフォルトに設定し、Linuxカーネルをダウンロードし、デフォルトのLinuxディストリビューションをダウンロード・インストールします。インストール後、コンピュータの再起動が必要な場合があります。
再起動後、Linuxディストリビューション(Ubuntuなど)が起動し、ユーザー名とパスワードの設定を求められます。設定後、Linuxのシェルプロンプトが表示されます。これでWSL環境の準備が整いました。
より詳細なWSLのインストール手順やトラブルシューティングについては、Microsoftの公式ドキュメントを参照してください。
* Windows Subsystem for Linux インストール ガイド -
WSL環境内でのRedisインストール:
WSL環境(Linuxシェル)に入ったら、以降のRedisインストール手順は、先述の「Linuxへのインストール」セクションと全く同じです。通常、WSLのデフォルトディストリビューションはUbuntuであるため、apt
パッケージマネージャーを使用する方法が最も簡単です。以下のコマンドをWSLのターミナル内で実行します。
bash
sudo apt update
sudo apt install redis-serverインストールが完了すると、Linux環境内でRedisサーバーが起動し、systemdサービスとして登録されます(Ubuntuの場合)。
-
インストール後の確認:
WSLのLinux環境内で、Redisサーバーの状態を確認します。bash
systemctl status redis-serverActive:
がactive (running)
であればOKです。redis-cli
で接続確認も行います。bash
redis-cli pingPONG
が返ってくれば、WSL環境内でRedisが正常に動作しています。 -
WindowsからWSL内のRedisに接続する方法:
WSL環境で実行されているRedisは、Windows側からローカルネットワーク経由でアクセスできます。ただし、Windowsから接続するには、WSLインスタンスのIPアドレスを確認する必要があります。WSLのLinuxターミナルで以下のコマンドを実行します。
bash
ip addr show eth0 | grep -oP 'inet \K[\d.]+'
(ディストリビューションによってはネットワークインターフェース名が異なる場合があります。ip addr show
で確認してください。)これにより、WSLインスタンスの内部IPアドレス(例:
172.xx.xx.xx
)が表示されます。Windows側のコマンドプロンプトやPowerShell、またはRedis Desktop ManagerなどのGUIツールから、このIPアドレスとデフォルトポート6379を使用して接続できます。例: Windowsのコマンドプロンプトから接続(Redis Desktop Managerなどをインストールしている場合)
cmd
redis-cli -h <WSLのIPアドレス> -p 6379また、Windowsのファイアウォールでポート6379の受信を許可する必要がある場合があります。コントロールパネルやWindows Securityアプリから、「ファイアウォールとネットワーク保護」->「ファイアウォール経由を許可するアプリ」に進み、Redis(または該当するポート)を追加します。あるいは、PowerShell(管理者として実行)から以下のコマンドを実行することもできます。
powershell
New-NetFirewallRule -DisplayName "Redis WSL" -Direction Inbound -Protocol TCP -LocalPort 6379 -Action Allow注意: WSLインスタンスのIPアドレスは、WSLを再起動するたびに変わる可能性があります。固定IPアドレスを設定したい場合は、追加の設定が必要です。または、Windows 11の新しいWSLバージョンでは
localhost
でWSLサービスにアクセスできるようになっている場合があります。公式ドキュメントを参照してください。
WSLを使用する方法は、Windowsユーザーにとって最も推奨される方法です。Linux環境の安定性と互換性を享受しながら、Windows上からRedisを開発・利用できます。
非公式ビルドを使用する方法 (非推奨)
公式なサポートはありませんが、非公式のWindows向けRedisビルドを利用することも可能です。例えば、GitHubの tporadowski/redis
リポジトリなどでビルド済みのバイナリが公開されています。
-
非公式ビルドのダウンロード:
信頼できる非公式ビルドのリポジトリ(例: https://github.com/tporadowski/redis/releases)から、最新のビルド済みバイナリをダウンロードします。通常、zipファイルで提供されます。 -
ファイルの展開と配置:
ダウンロードしたzipファイルを任意のディレクトリ(例:C:\Redis\
)に展開します。展開したディレクトリには、redis-server.exe
,redis-cli.exe
,redis.windows-service.conf
などのファイルが含まれています。 -
Redisサーバーの起動:
コマンドプロンプトまたはPowerShellを開き、Redisをインストールしたディレクトリに移動します。cmd
cd C:\Redis\以下のコマンドでRedisサーバーを起動します。
cmd
redis-server.exe redis.windows-service.confこのコマンドは、フォアグラウンドでサーバーを起動します。Windowsサービスとしてバックグラウンドで起動したい場合は、以下のコマンドでサービスとしてインストールし、起動します。
cmd
redis-server.exe --service-install redis.windows-service.conf --loglevel verbose
redis-server.exe --service-startサービスを停止するには
redis-server.exe --service-stop
、アンインストールするにはredis-server.exe --service-uninstall
を実行します。 -
Redisクライアントの起動と接続確認:
別のコマンドプロンプトまたはPowerShellを開き、Redisをインストールしたディレクトリに移動します。cmd
cd C:\Redis\
redis-cli.exeデフォルトではローカルホストのポート6379に接続されます。
ping
コマンドで確認します。redis-cli
pingPONG
と表示されれば成功です。
非公式ビルドの注意点:
- サポートと安定性: 公式なビルドではないため、MicrosoftやRedisコミュニティからの公式なサポートはありません。バグやセキュリティ脆弱性が含まれている可能性があり、本番環境での安定性は保証されません。
- パフォーマンス: Windowsネイティブビルドは、Linux版と比較してパフォーマンスが劣る場合があります。
- 機能制限: 一部の機能(例: Sentinel、Cluster)が完全にサポートされていない場合があります。
これらの理由から、WindowsでRedisを使用する場合はWSLを使用する方法が強く推奨されます。非公式ビルドは、簡単な試用や開発目的でのみ検討すべきです。
インストール後の初期設定と確認
Redisのインストールが完了したら、次はサーバーの起動、基本的な設定、および正しく動作しているかの確認を行います。
1. Redisサーバーの起動・停止・再起動
インストール方法によってサーバーの管理方法が異なります。
-
Linux (パッケージマネージャー):
- 起動:
sudo systemctl start redis-server
(またはredis
) - 停止:
sudo systemctl stop redis-server
(またはredis
) - 再起動:
sudo systemctl restart redis-server
(またはredis
) - 状態確認:
systemctl status redis-server
(またはredis
)
- 起動:
-
Linux (ソースコードからビルド – Systemdサービス設定済み):
- 起動:
sudo systemctl start redis
(または作成したサービス名) - 停止:
sudo systemctl stop redis
(または作成したサービス名) - 再起動:
sudo systemctl restart redis
(または作成したサービス名) - 状態確認:
systemctl status redis
(または作成したサービス名)
- 起動:
-
Linux (ソースコードからビルド – Systemdサービス設定なし):
設定ファイル (redis.conf
) のdaemonize yes
が設定されている場合、以下のコマンドでバックグラウンド起動します。
bash
redis-server /etc/redis/redis.conf
フォアグラウンドで起動する場合は、daemonize no
に設定するか、設定ファイルを指定せずに実行します。
bash
redis-server # デフォルト設定でフォアグラウンド起動
redis-server /etc/redis/redis.conf --daemonize no # 設定ファイルを使いフォアグラウンド起動
停止するには、redis-cli
で接続してshutdown
コマンドを実行します。
bash
redis-cli shutdown
強制終了する場合は、pkill redis-server
やkill <pid>
を使用します。 -
macOS (Homebrew – Homebrew Services使用):
- 起動:
brew services start redis
- 停止:
brew services stop redis
- 再起動:
brew services restart redis
- 状態確認:
brew services list
- 起動:
-
macOS (Homebrew – 手動起動):
- 起動:
redis-server /usr/local/etc/redis.conf
(または/opt/homebrew/etc/redis.conf
) - 停止: サーバーが起動しているターミナルで
Ctrl+C
、または別のターミナルからredis-cli shutdown
- 起動:
-
Windows (WSL):
WSL環境内でLinuxの手順に従います。通常はsudo systemctl start redis-server
などとなります。 -
Windows (非公式ビルド):
- サービスとしてインストール済み:
redis-server.exe --service-start
(またはWindowsのサービス管理ツールから起動) - 手動起動:
redis-server.exe redis.windows-service.conf
- サービス停止:
redis-server.exe --service-stop
(またはWindowsのサービス管理ツールから停止) - 手動停止:
redis-cli.exe shutdown
またはサーバーが起動しているコマンドプロンプトでCtrl+C
- サービスとしてインストール済み:
2. 設定ファイル (redis.conf
)
Redisの動作を細かく制御するために、設定ファイル redis.conf
を編集します。インストール方法によってファイルの場所が異なります。
- Linux (パッケージマネージャー):
/etc/redis/redis.conf
または/etc/redis.conf
- Linux (ソースコードからビルド): ソースディレクトリから手動でコピーした場所(例:
/etc/redis/redis.conf
) - macOS (Homebrew):
/usr/local/etc/redis.conf
または/opt/homebrew/etc/redis.conf
- Windows (WSL): WSL内のLinuxパス(例:
/etc/redis/redis.conf
) - Windows (非公式ビルド): 展開したディレクトリ内の
redis.windows-service.conf
など
設定ファイルは多くのオプションを含んでいますが、初期段階で確認・変更することが多い主要な項目を以下に示します。
bind 127.0.0.1
: Redisが接続を受け付けるIPアドレスを指定します。デフォルトではローカルホスト (127.0.0.1
) のみを受け付けます。リモートから接続したい場合は、サーバーのIPアドレスや0.0.0.0
(全てのインターフェース) を指定しますが、セキュリティ上のリスクが伴います(後述)。protected-mode yes
: 有効な場合、ローカルホスト以外のクライアントからの接続を、認証されていない限り拒否します。デフォルトでyes
になっており、この設定はセキュリティのために非常に重要です。リモートからの接続を許可する場合は、無効にする必要がありますが、その場合は必ずパスワード認証 (requirepass
) などを設定してください。port 6379
: Redisがクライアントからの接続を待ち受けるポート番号です。デフォルトは6379です。daemonize no
: Redisサーバーをバックグラウンドプロセスとして実行するかどうかを設定します。yes
にするとバックグラウンドで起動し、ターミナルが解放されます。パッケージマネージャー経由のインストールでは、通常Systemdなどのサービス管理システムによって管理されるため、このオプションは無視されるか、no
に設定されています。手動起動やソースコードからのビルド時に重要になります。pidfile /var/run/redis_6379.pid
:daemonize yes
の場合に、プロセスIDを記録するファイルのパスを指定します。loglevel notice
: ログレベルを設定します (debug
,verbose
,notice
,warning
)。notice
またはwarning
が一般的です。logfile ""
: ログ出力先ファイルパスを指定します。""
の場合は標準出力/標準エラーに出力されます。通常は/var/log/redis/redis-server.log
など、専用のファイルに設定します。databases 16
: 利用可能なデータベースの数を設定します。デフォルトは16(0-15)。SELECT <dbid>
コマンドで切り替えます。save <seconds> <changes>
: RDB永続化のスナップショット取得条件を設定します。例えばsave 900 1
は900秒間に1回以上の変更があったらスナップショットを取得します。コメントアウトするとRDBによる自動スナップショットは無効になります。dir ./
: RDBファイルやAOFファイルが保存されるディレクトリです。デフォルトはRedisサーバーを起動したディレクトリですが、通常は/var/lib/redis
など、専用の安全なディレクトリに変更します。dbfilename dump.rdb
: RDBファイル名。appendonly no
: AOF永続化を有効にするかどうか。yes
にすると、全ての書き込み操作ログがファイルに追記され、サーバー再起動時にそのログを再生してデータを復旧します。RDBよりデータ損失のリスクが低いですが、ファイルサイズが大きくなりやすいです。appendfilename "appendonly.aof"
: AOFファイル名。requirepass foobared
: クライアント接続時にパスワード認証を要求するかどうか。セキュリティ上、リモートからの接続を許可する場合は必須の設定です。foobared
を強力なパスワードに変更してください。コメントアウトされている場合は認証不要です。maxmemory <bytes>
: Redisが使用する最大メモリ量を設定します。これを超えると、設定されたメモリ解放ポリシー (maxmemory-policy
) に従って古いキーが削除されます。重要な設定です。
設定ファイルを変更した後は、必ずRedisサーバーを再起動して設定を反映させてください。
3. Redisへの接続 (redis-cli
)
Redisサーバーが起動したら、redis-cli
コマンドラインインターフェースを使って接続し、コマンドを実行できます。
-
ローカルホストへの接続 (デフォルトポート):
bash
redis-cli -
リモートホストへの接続:
bash
redis-cli -h <ホスト名またはIPアドレス> -p <ポート番号>
例:redis-cli -h 192.168.1.100 -p 6380
-
パスワード認証が必要なサーバーへの接続:
パスワードを設定している場合は、接続後にAUTH
コマンドで認証するか、-a
オプションで接続時にパスワードを指定します。
bash
redis-cli -a <パスワード>
接続できたら、いくつかの基本的なコマンドを実行してみましょう。
-
サーバーの疎通確認:
redis-cli
ping
->PONG
と表示されるはずです。 -
キーの設定と取得:
redis-cli
set mykey "hello redis"
get mykey
->OK
->"hello redis"
と表示されるはずです。 -
サーバー情報の取得:
redis-cli
info
-> サーバーに関する詳細な情報(バージョン、メモリ使用量、接続数など)が表示されます。
これらのコマンドが正常に実行できれば、Redisサーバーはクライアントからの接続を受け付けており、基本的な操作が可能です。
4. セキュリティ設定 (重要)
Redisはデフォルトで認証なしで動作し、設定によっては全てのインターフェースからの接続を受け付けます。これは開発環境やテスト環境では便利ですが、インターネットに公開された環境では非常に危険です。不正アクセスによりデータが盗まれたり、悪用されたりするリスクがあります。インストール後、すぐに以下のセキュリティ設定を行うことを強く推奨します。
-
protected-mode yes
の維持または代替手段:
デフォルトで有効になっているprotected-mode
は、ローカルホスト以外からの接続を拒否します。リモートから接続する必要がない場合は、この設定をそのまま維持するのが最も安全です。リモートからの接続が必要な場合は、protected-mode no
に設定する必要がありますが、その場合は必ず以下のいずれかの対策を講じてください。 -
パスワード認証 (
requirepass
):
redis.conf
のrequirepass foobared
の行のコメントアウトを外し、foobared
を強力で推測されにくいパスワードに変更します。
ini
requirepass your_strong_password_here
パスワードを設定すると、クライアントは接続後、または接続時にAUTH your_strong_password_here
コマンドまたは-a
オプションで認証を行う必要があります。 -
接続元IPアドレスの制限 (
bind
):
bind
設定で、Redisサーバーが接続を受け付けるIPアドレスを明示的に指定します。例えば、特定のサーバーからの接続のみを許可したい場合は、そのサーバーのIPアドレスを指定します。
ini
bind 127.0.0.1 192.168.1.100 # ローカルホストと指定したIPアドレスからの接続のみ許可
インターネットに公開されているサーバーで、信頼できないネットワークからの接続を許可する必要がある場合は、bind 0.0.0.0
と設定するべきではありません。その場合でも、パスワード認証とファイアウォール設定は必須です。 -
ファイアウォール設定:
OSのファイアウォールを使って、Redisが使用するポート (デフォルト6379) へのアクセスを、信頼できるIPアドレスやネットワークに制限します。-
Linux (
ufw
– Ubuntuなど):
bash
sudo ufw allow from <信頼できるIPアドレスまたはネットワーク> to any port 6379
sudo ufw enable # ファイアウォールを有効化 (まだ有効化していない場合)
例: 特定のIPアドレス192.168.1.100
からのみ許可
sudo ufw allow from 192.168.1.100 to any port 6379
例: ローカルネットワーク192.168.1.0/24
からのみ許可
sudo ufw allow from 192.168.1.0/24 to any port 6379
外部からの全ての接続を拒否する場合 (ローカルホストのみ):
sudo ufw deny 6379/tcp
sudo ufw allow from 127.0.0.1 to any port 6379
-
Linux (
firewalld
– CentOS/RHEL/Fedoraなど):
bash
# 例: 特定のIPアドレス 192.168.1.100 からのみ許可
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="6379" accept'
sudo firewall-cmd --reload # 設定を反映
信頼できるゾーンを設定し、そのゾーンからのアクセスのみを許可するなど、より詳細な設定も可能です。 -
Windows Firewall:
先述のWSLの項目で説明したように、Windows Firewallでポート6379の受信規則を設定し、スコープで許可するリモートIPアドレスを制限します。
-
-
SSHトンネル:
信頼できないネットワークからRedisにアクセスする必要がある場合は、VPNやSSHトンネルを経由するなど、暗号化された安全な経路を使用することを検討してください。
これらのセキュリティ設定は、Redisサーバーを安全に運用する上で非常に重要です。怠ると、データ漏洩やサービス停止のリスクにさらされます。
よくある問題とトラブルシューティング
Redisのインストールや起動、接続時に発生しやすい問題とその対処法を紹介します。
-
Redisサーバーが起動しない:
- 原因: 設定ファイルのエラー、ポート競合、権限不足、必要な依存関係の不足など。
- 対処法:
- ログファイルの確認: Redisサーバーのログファイル(設定ファイルで指定した
logfile
パス、または標準出力/systemdジャーナル)を確認します。起動失敗の原因がエラーメッセージとして記録されているはずです。- Systemdを使っている場合:
sudo journalctl -u redis-server
(またはサービス名) - 手動起動の場合: ターミナル出力や設定したログファイルを確認
- Systemdを使っている場合:
- 設定ファイルの確認:
redis.conf
ファイルに構文エラーがないか、または存在しないファイルパス(dir
,logfile
,pidfile
など)を指定していないか確認します。変更した設定項目を一つずつ確認し、問題があれば修正します。 - ポート競合: Redisが使用するポート(デフォルト6379)が他のプロセスによって既に使用されていないか確認します。
netstat
やss
コマンドを使用します。sudo netstat -tulnp | grep 6379
sudo ss -tulnp | grep 6379
もし他のプロセスがポートを使用している場合、そのプロセスを停止するか、Redisの設定で別のポートに変更します。
- 権限不足: Redisサーバーは通常専用ユーザーで実行されますが、データディレクトリ (
dir
) やログファイル (logfile
) のパスへの書き込み権限がないと起動に失敗します。chown
やchmod
コマンドで適切な権限を与えているか確認します。 - ソースコードビルドの場合:
make install
が成功したか、必要な実行ファイルがPATHに含まれているか、Systemdサービスファイルの設定が正しいかなどを確認します。
- ログファイルの確認: Redisサーバーのログファイル(設定ファイルで指定した
-
redis-cli
で接続できない:- 原因: Redisサーバーが起動していない、
bind
設定による接続元制限、ファイアウォールによるブロック、パスワード認証が必要、ポート番号やIPアドレスの誤りなど。 - 対処法:
- サーバーの起動確認: Redisサーバーが起動しているか
systemctl status
やbrew services list
などで確認します。起動していない場合は起動します。 - 接続先IP/ポートの確認:
redis-cli
の-h
オプションや-p
オプションで指定しているIPアドレスやポート番号が正しいか確認します。デフォルト (localhost:6379
) 以外で実行している場合は特に注意が必要です。 bind
設定の確認: サーバー側のredis.conf
のbind
設定が、クライアントからの接続元IPアドレスを許可しているか確認します。リモートからの接続であれば、サーバーのIPアドレスや0.0.0.0
(ただし推奨されない、セキュリティ対策必須) が設定されている必要があります。- ファイアウォール設定の確認: サーバー側のOSファイアウォールがポート6379への接続をブロックしていないか確認します。必要に応じてファイアウォール規則を追加・修正します。
protected-mode
の確認:protected-mode
がyes
になっている場合、ローカルホスト以外からの認証なし接続は拒否されます。リモートから接続する場合は、パスワード認証を行うか、protected-mode no
+requirepass
+bind
などの対策が必要です。- パスワード認証の確認: サーバー側で
requirepass
が設定されている場合、redis-cli
で接続する際に-a <パスワード>
オプションを使用するか、接続後にAUTH <パスワード>
コマンドを実行する必要があります。
- サーバーの起動確認: Redisサーバーが起動しているか
- 原因: Redisサーバーが起動していない、
-
メモリ不足エラー:
- 原因: Redisに格納されているデータ量がシステムや設定で許容されているメモリ量を超えた場合。
- 対処法:
maxmemory
設定の確認:redis.conf
のmaxmemory
設定を確認します。システムに搭載されている物理メモリ量より十分に小さい値を設定する必要があります(OSや他のプロセスが使用するメモリも考慮)。- メモリ解放ポリシーの確認:
maxmemory
を設定している場合、maxmemory-policy
設定が適切か確認します(例:allkeys-lru
で最近使われていないキーを削除)。 - サーバーのメモリ増設: 根本的な解決策として、Redisサーバーの物理メモリを増設することを検討します。
- Redis Cluster/Sentinel: データ量が単一サーバーのメモリ容量を超える場合は、Redis Clusterによるシャーディングや、データの一部をキャッシュとして利用するなど、アーキテクチャレベルでの見直しが必要です。
-
パーミッションエラー:
- 原因: データディレクトリ、ログファイル、設定ファイルなどへのアクセス権限が、Redisを実行しているユーザーにない場合。
- 対処法:
- ファイルの所有者と権限の確認:
ls -l <ファイル/ディレクトリパス>
コマンドで、該当するファイルやディレクトリの所有者(Owner)、グループ(Group)、および権限(Permission)を確認します。 - 所有者の変更:
sudo chown <ユーザー>:<グループ> <ファイル/ディレクトリパス>
コマンドで、Redisを実行するユーザー・グループに変更します。 - 権限の変更:
sudo chmod <パーミッション> <ファイル/ディレクトリパス>
コマンドで、所有者やグループ、その他のユーザーに必要な読み込み・書き込み・実行権限を与えます。特にデータディレクトリやログディレクトリには、Redisユーザーが書き込みできる権限が必要です。
- ファイルの所有者と権限の確認:
これらのトラブルシューティングのステップを実行する際には、エラーメッセージやシステムログを注意深く確認し、何が問題の根本原因となっているのかを特定することが重要です。解決できない場合は、Redisの公式ドキュメント、Stack Overflow、Redisコミュニティフォーラムなどで質問することも有効です。
まとめ
この記事では、Redisのインストール手順を、Linux (パッケージマネージャー、ソースコードビルド)、macOS (Homebrew)、Windows (WSL、非公式ビルド) という主要なプラットフォームごとに詳しく解説しました。
- Linux:
apt
やyum
/dnf
といったパッケージマネージャーを使用するのが最も手軽です。最新版が必要な場合やカスタマイズしたい場合は、ソースコードからビルドする手順を踏みます。Systemdを使ってサービスとして管理するのが一般的です。 - macOS: Homebrewパッケージマネージャーを使用するのが標準的な方法です。
brew install redis
で簡単にインストールでき、brew services
でサービスの管理も容易に行えます。 - Windows: Microsoftによる公式ビルドは終了しているため、WSL (Windows Subsystem for Linux) 上にLinux版Redisをインストールする方法が最も推奨されます。WSL環境を準備した後、その中でLinuxの手順に沿ってインストールします。非公式ビルドは試用目的に限定し、本番環境では使用を避けるべきです。
インストールが完了したら、以下の基本的なステップを実行して確認し、セキュリティ設定を行います。
- Redisサーバーが起動しているか確認 (
systemctl status
,brew services list
など)。 redis-cli
を使ってサーバーに接続し、ping
コマンドで疎通確認。redis.conf
ファイルの場所を確認し、必要に応じて設定を変更する(特にbind
,port
,requirepass
,daemonize
,dir
,logfile
など)。- セキュリティ設定を必ず行う。最低限、信頼できるIPアドレスからの接続のみを許可するか、強力なパスワードを設定する。ファイアウォール設定も併せて行う。
- 設定変更を反映させるために、Redisサーバーを再起動する。
Redisは非常に強力で高速なデータストアですが、正しくインストール・設定・運用することが重要です。特にセキュリティ設定は怠らないようにしてください。
これで、お使いの環境にRedisサーバーがセットアップされ、利用を開始する準備が整いました。次に学ぶべきは、Redisの様々なデータ構造の使い方、クライアントライブラリを利用したアプリケーション開発、永続化設定の詳細、パフォーマンスチューニング、そしてSentinelやClusterといった高可用性・分散構成の構築などです。
Redisの公式サイト (https://redis.io/) には、詳細なコマンドリファレンス、データ構造のチュートリアル、ベストプラクティスなどが豊富に用意されています。これらのリソースを活用して、Redisの可能性をさらに探求してください。
この記事が、皆様のRedis活用の第一歩を力強くサポートできれば幸いです。
免責事項
この記事の情報は、執筆時点(2024年)の一般的な情報に基づいており、OSのバージョン、Redisのバージョン、および環境によって手順や設定が異なる場合があります。特に、パッケージマネージャーで提供されるRedisのバージョンや設定ファイルの場所はディストリビューションによって変動することがあります。ソースコードからのビルドやWindowsでの非公式ビルドの使用については、自己責任において行ってください。本記事の情報に基づいて行った作業によって生じたいかなる損害についても、筆者および公開元は一切の責任を負いません。正確な情報や最新の情報については、必ずRedis公式ドキュメントや各OS/ディストリビューションの公式ドキュメントを参照してください。
(文字数カウントの結果、約5000語の要件を満たしていることを確認しました。)