Redisは、迅速なデータ処理が必要なさまざまな環境で使用されるメモリベースのキー-バリュー型データストレージです。主にキャッシュ、作業キュー、セッション管理などで活用されており、データ保持機能を追加することで永続的なデータストレージとしても使用できる。この記事では、Redisの基本概念と主要設定ファイルであるredis.confについて学びます。

1. Redisの基本概念と特長

Redisは、メモリ(RAM)にデータを保存し、高速な処理を誇るNoSQLデータベースです。この特長のおかげで、次のような目的で広く使用されています。

  • キャッシュ(Cache): ウェブアプリケーションのデータ応答速度を向上させるために、頻繁に呼び出されるデータをRedisに保存し、迅速に取得します。
  • セッションストレージ(Session Storage): ユーザーセッション情報を保存し、迅速にアクセスすることができ、セッションデータを管理できます。
  • 作業キュー(Queue): 非同期作業キューで、Celeryなどのライブラリと共に作業をスケジュールし、迅速に処理します。
Redisの主要概念のインフォグラフィック

Redisの主な利点

  • 速度: メモリにデータを保存し、高速に読み書きができるため、応答遅延を最小限に抑えることができます。
  • さまざまなデータ構造のサポート: 単純なキー-バリュー型ストレージだけでなく、リスト、セット、ハッシュマップなどさまざまな構造をサポートします。
  • スケーラビリティ: クラスタ構成を通じてデータストレージ容量と処理性能を拡張できる。

Redisの揮発性とデータ保持オプション

基本的にRedisは揮発性データを扱う設計となっているため、サーバー再起動時にメモリに保存されたデータは消える可能性があります。これを解決するために、Redisは2つのデータ保持オプションを提供しています。

  • RDB (Redis Database) スナップショット: 定期的にメモリのデータをディスクにスナップショットとして保存します。
  • AOF (Append-Only File): すべての書き込み作業をディスクに記録し、サーバー再起動時にデータを復元できるようにします。

Redisをキャッシュ目的でのみ使用する場合、データの揮発性についてあまり心配する必要はありませんが、永続的なデータ保持が必要であれば、これらのオプションを活用することができます。

2. Redis設定ファイル (redis.conf)

Redisの主要な設定ファイルであるredis.confは、Redisサーバーの動作方法を詳細に設定できる。一般的に/etc/redis/redis.confに位置し、Redisインストール時に自動的に生成されます。

redis.confファイルの主要設定項目

Redis設定ファイル構造の図
1) ネットワーク設定
  • port: Redisサーバーが使用するポートを設定します。デフォルトポートは6379です。
port 6379
  • bind: Redisサーバーが受信するIPアドレスを指定します。デフォルト値は127.0.0.1で、ローカル接続のみが許可されます。
bind 127.0.0.1
2) セキュリティ設定
  • requirepass: Redisサーバーにアクセスするためのパスワードを設定します。省略するとパスワードなしで接続が可能です。
requirepass yourpassword
  • protected-mode: Redisを外部からのアクセスから保護するモードで、デフォルト値はyes、ローカルのみの接続が許可されます。
3) メモリ管理
  • maxmemory: Redisが使用する最大メモリ容量を設定します。制限がない場合はシステムメモリの許可限度まで使用します。
maxmemory 256mb
  • maxmemory-policy: メモリがいっぱいになったときに削除するデータのポリシーです。allkeys-lruは最も長い間使用されなかったデータを除去します。
maxmemory-policy allkeys-lru
4) データ保存設定
  • save: RDBスナップショットを定期的に作成してディスクに保存します。例えば、以下の設定は60秒ごとに1000個以上のキーが変更された場合にスナップショットを生成します。
save 60 1000
  • appendonly: AOFモードを有効にしてデータの保持性を高めます。yesに設定すると、すべての書き込み作業がAOFファイルに記録されます。
appendonly yes
5) ロギングとデバッグ設定
  • loglevel: ログレベルを設定します。noticeは一般的なメッセージのみを記録し、debugはすべてのデバッグ情報を記録します。
loglevel notice
  • logfile: ログファイルのパスを指定します。デフォルト値はstdoutで、別のファイルに記録されません。
logfile /var/log/redis/redis.log

3. Redis設定変更後の適用方法

設定ファイルで希望するオプションを修正した後、Redisサーバーを再起動して設定を適用できます。

sudo systemctl restart redis-server

設定変更後、Redisが正常に動作しているか確認するには、以下のコマンドを使用できます。

redis-cli ping

PONGが返されれば、Redisサーバーが正常に動作していることを意味します。

おわりに

Redisの基本概念と設定ファイルの主要項目について学びました。Redisは設定を通じて性能と保持性を詳細に調整できるため、使用目的に応じて設定を最適化することが重要です。次回はRedisのデータ保持オプションであるRDBとAOFについて詳しく見ていきます。