Redis クイックスタート

こんにちは、鈴木です。

最近、 KVS (Key Value Store) の一つである Redis を使い始めました。

KVS では memcached が有名ですが、それと比較してデータ型が豊富である点や、データの永続化をサポートしている点が Redis の特徴です。

 

Redis のインストール

現時点で Redis の最新版は 2.6.x ですが、手元の環境でパッケージからインストールしたところ 2.4 系統が入ってしまいました。

最新版を使ってみたかったので、ソースからインストールしました。

まず公式サイトからソースコードをダウンロードし、展開します。

次に make します。

そして make install します。

最後に、起動スクリプトや設定ファイルの作成など、運用に必要なファイルを作成します。

これを行うには、utils ディレクトリにある install_server.sh を使用すれば OK です。

install_server.sh を実行すると、以下のように必要な情報を聞かれますので、順番に答えていきましょう。

これで Redis のインストールは完了です。

Redis を複数起動したい場合(例えばデータを永続化しない設定と永続化する設定それぞれを起動したい場合)は install_server.sh を複数回実行します(当然ですが、指定するパラメータは変える必要があります)。

 

Redis の起動と終了

以下のように起動します。

終了は次のとおりです。

 

redis-cli で接続する

Redis に接続するには redis-cli を使用します。

引数を指定せずに実行すると、ローカルホストの 6379 ポートに接続します。(-h で接続先ホスト、-p でポート番号を指定できます。その他オプションについては「redis-cli --help」で確認できます)

それではいくつか簡単なオペレーションを行なってみましょう。

まずは生存確認です。PING コマンドを実行します。問題無ければ「PONG」と返してくれます。

次は値の設定です。SET コマンドで count というキーに 1 という値を設定します。

設定した値は GET コマンドで取得します。

INCR コマンドを使用すると、値をインクリメントすることができます。

先程 1 を設定したので、インクリメントして 2 になるはずです。レスポンスからも値が 2 になったと読み取れます。

値の削除は DEL コマンドで行います。

レスポンスの 1 は「1 件削除しました」という意味です。(DEL コマンドには削除対象のキーを複数渡すことができ、存在しないキーは単純に無視されます。)

削除したキーを GET してみます。

結果は「(nil)」となります。

 

Ruby から Redis を使う

Ruby から Redis を扱うためのライブラリはいくつかありますが、今回は公式サイトで紹介されていた redis (redis-rb) を使用します。

また、redis (redis-rb) のドキュメントで紹介されていた hiredis (hiredis-rb) も導入します(hiredis (hiredis-rb) を導入すると、特に大きいサイズのレズポンスのパースが高速化されるそうです)。

それぞれインストールするには、

コンソールで以下のコマンドを実行するか、

bundler を使用しているのであれば Gemfile に以下を追加してから「bundle install」します。

サンプルコードです。

値の設定、取得、削除は以下のように行います。

メソッド名と引数は Redis のコマンドに合わせてあるようです。

 

Redis の設定

Redis を前述の install_server.sh を用いてデフォルトの設定で作成した場合、設定ファイルは /etc/redis/6379.conf に作成されます。

設定項目はいくつもありますが、設定ファイルの中を見ると、

  • サーバ全体の設定
  • スナップショットの設定(SNAPSHOTTING)
  • レプリケーションの設定(REPLICATION)
  • セキュリティの設定(SECURITY)
  • リソースの上限設定(LIMITS)
  • Append Only File の設定(APPEND ONLY MODE)
  • 組み込み言語 LUA によるスクリプティングの設定(LUA SCRIPTING)
  • スローログの設定(SLOW LOG)
  • その他の設定(ADVANCED CONFIG)
  • 設定ファイルのインクルード設定(INCLUDES)

という順番で記述されています。

設定項目はいくつもありますので、まずはサーバ全体の設定から最初に確認しておいたほうが良さそうなものをピックアップします。

daemonize

yes を指定するとデーモンとして実行されるようになります。

port

TCP 接続を受け付けるポート番号を指定します。install_server.sh でインストールした場合は、その時に入力したポート番号が設定されているはずです。

0 を指定すると TCP 接続は受け付けないようになりますので、Unix ドメインソケットのみで接続するという場合は 0 を指定します。

bind

TCP 接続を受け付けるインタフェースを指定します。

ローカルからしか接続しない場合は 127.0.0.1 を指定すると良いでしょう。

省略するとどこからでも接続することができるので、別サーバにレプリケーションする場合などは省略することになると思います。

細かい設定を行ないたい場合は、iptables など別のレイヤーで制限をかければ良さそうです。

unixsocket, unixsocketperm

Unix ドメインソケットでの接続を受け付けたい場合に設定します。

unixsocket でソケットファイルのパス(/tmp/redis.sock など)、unixsocketperm でファイルに設定するパーミッション(755 など)を指定します。

databases

事前に準備しておくデータベースの数を指定します。

Redis ではデータベースを複数持つことができ、0 から順番に番号が付けられています。

これによって、異なる用途のデータは異なる番号のデータベースに保存することができるため、非常に便利です。

 

まとめ

今回は Redis を導入して使い始めるまでを一通り見てきました。

次回以降はバックアップやレプリケーションなどポイントを絞って調べていこうと思います。

 

Comments are closed, but you can leave a trackback: Trackback URL.