Redis設定ファイル(redis.conf)の基本を完全ガイド!初心者でもわかるデータベース設定
生徒
「Redis(レディス)って、普通のデータベースと何が違うんですか?」
先生
「Redisは、データをパソコンの『メモリ』という一番速い場所に保存するデータベースです。超特急で動くメモ帳のようなものですね。」
生徒
「設定ファイルっていうのが難しそうで……初心者の私でも触れますか?」
先生
「大丈夫です。設定ファイルは、いわば『Redisというロボットへの説明書』です。どこで働くか、いつ休憩するかを決めるだけなので、仕組みを知れば怖くありませんよ。」
1. Redisの設定ファイル「redis.conf」とは?
データベースの世界で大人気の「Redis(レディス)」。その動きを細かく決める司令塔が「redis.conf(レディス・ドット・コンフ)」というファイルです。
パソコンを触ったことがない方のために例えると、これは「お店の運営マニュアル」のようなものです。「お店は何時に開けるのか」「看板は何色にするのか」「泥棒が入らないように鍵はどうするのか」といったルールを、このファイルに書き込んでいきます。
Redisは「インメモリデータベース」と呼ばれます。通常のデータベースが本棚(ハードディスク)に重い辞書を片付けるのに対し、Redisは机の上(メモリ)にメモを広げておくようなイメージです。そのため、読み書きが驚くほど速いのが特徴です。
運用(ソフトを動かし続けること)において、この設定ファイルを正しく理解することは、トラブルを防ぐための第一歩になります。
エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。
SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る※ Amazon広告リンク
2. 設定ファイルの中身を覗いてみよう
設定ファイルは、メモ帳のようなテキストファイルでできています。中には英語でたくさんの指示が書かれていますが、初心者がまず覚えるべきは「ポート番号」や「保存ルール」です。
では、実際にどのようにデータを扱うか、簡単な名簿データの例で見てみましょう。Redisでは「キー(名前)」と「値(中身)」をペアにして保存します。
【実行前のデータ状態】
key | value (名前) | age | job
-------------+----------------+-----+-----------
user:1 | 山田太郎 | 25 | 会社員
user:2 | 佐藤花子 | 19 | 学生
user:3 | 鈴木一郎 | 30 | 公務員
user:4 | 田中健二 | 42 | エンジニア
ここで、Redisに新しいデータを追加する命令(SET命令)を出してみます。
SET user:5 "高橋愛"
SET user:5:age 28
SET user:5:job "デザイナー"
【実行後のデータ状態】
key | value (名前) | age | job
-------------+----------------+-----+-----------
user:1 | 山田太郎 | 25 | 会社員
user:2 | 佐藤花子 | 19 | 学生
user:3 | 鈴木一郎 | 30 | 公務員
user:4 | 田中健二 | 42 | エンジニア
user:5 | 高橋愛 | 28 | デザイナー
3. 超重要!基本的な設定項目(パラメータ)
redis.confに書かれている設定項目のことを「パラメータ」と呼びます。ここでは、初心者がまず知っておくべき3つの設定を解説します。
① ネットワーク設定(bind / port)
「bind(バインド)」は、どのパソコンからの接続を許可するかを決めます。「port(ポート)」は、データの入り口となる「ドアの番号」です。通常、Redisは「6379」という番号のドアを使います。
② データの保存(save)
Redisは机の上(メモリ)で作業するので、パソコンの電源が切れるとデータが消えてしまいます。それを防ぐために、定期的に本棚(ファイル)に書き出す設定が「save」です。例えば、「900秒の間に1回でもデータが変わったら保存する」といった指示を出します。
③ パスワード設定(requirepass)
誰でも勝手にデータを見られないように、鍵をかける設定です。「requirepass(リクワイア・パス)」の後に好きな合言葉を書くことで、セキュリティを高めることができます。
次に、データの有効期限を設定する例を見てみましょう。Redisは、一定時間が経つと自動で消える「クーポン」のようなデータを扱うのが得意です。
SET coupon:special "10%割引"
EXPIRE coupon:special 60
この命令は、「特別クーポン」というデータを保存し、60秒後に自動的に消去するという意味です。
key | value | 有効期限
---------------+--------------+-----------
coupon:special | 10%割引 | 残り60秒
4. トラブル対応:もしもデータが消えたら?
運用(データベースを動かし続けること)をしていると、「さっき保存したはずのデータがない!」というトラブルが起きることがあります。
その原因の多くは、先ほど説明した「メモリ」と「保存(永続化)」の関係にあります。Redisは非常に速い反面、保存のタイミングを設定し忘れると、急な停電などでデータが消えてしまうのです。
トラブルを防ぐための設定を確認してみましょう。
Redisには「日記(ログ)」をつける機能があります。エラーが起きたときは、この日記を読むことで「何時に何が起きたか」を知ることができます。設定ファイルの
logfile という項目で、どこに日記を書くかを指定します。
以下のコードは、現在のデータがいくつあるかを確認し、すべてのデータを消去する(トラブル時にやり直す際などに使う)例です。
DBSIZE
FLUSHALL
DBSIZE
【実行結果】
(integer) 5
OK
(integer) 0
「DBSIZE」でデータが5個あることを確認し、「FLUSHALL」で全部消し、再度確認したら0個になった、という流れです。初心者のうちは、この「全部消す」命令を本番環境で使わないように注意しましょう。
5. メモリの使いすぎを防ぐ設定(maxmemory)
Redisは「机の上」で作業すると言いました。しかし、机の広さ(メモリ容量)には限界があります。もしデータが溢れてしまったら、パソコン全体の動きが止まってしまうかもしれません。
そこで役立つのが「maxmemory(マックス・メモリ)」設定です。「これ以上のメモリは使わないでね」という上限を決めることができます。
さらに、上限に達したときに「古いデータから捨てるのか」「新しいデータを拒否するのか」という方針(ポリシー)も決めることができます。これを「maxmemory-policy」と呼びます。
このように、設定ファイルを一つずつ紐解いていくと、Redisがどのようにデータを守り、どのように高速な処理を実現しているのかが見えてきます。プログラミング未経験の方でも、「どこに何を保存するか」というルール作りだと考えれば、決して難しくはありません。
まずは自分のパソコンにRedisを入れて、設定ファイルを少しずつ書き換えて反応を見てみるのが、上達への近道です。