redisとは
・Redis・データはメモリ上に入っている。インメモリデータベース。
・ディスクにデータを適当なタイミングで書き込み可能(永続化できる)。
・Key-Valueストア。キーと、それに対応したValueから構成される。ValueにはStringやListなど様々な型が使える。
・Github、stackoverflow、ニコ生などで採用実績がある。
・初めて登場したのは2009年4月。ネット上の記事は2011年頃のをよく見る。
・API一覧はここ。Command reference – RedisまたはKOSHIGOE学習帳 - [KVS][Redis] Redis コマンド一覧。
redisのインストール
環境:さくらVPS、CentOS6.3。ここにredis 2.4.16(Stable)を入れます。まずredisをダウンロードしてmake installまで。
$ wget http://redis.googlecode.com/files/redis-2.4.16.tar.gz $ tar zxvf redis-2.4.16.tar.gz $ cd redis-2.4.16 $ make $ sudo make installだめでした。「$ make test」して調べたところ、「You need 'tclsh8.5' in order to run the Redis test」と言われました。(tclshとは、Tclのためのシェル。)yumで入るのか確認してみましょう。
$ yum info tcl確認するとVersion8.5.7が入るらしいのでインストール。
$ sudo yum install tclそうしてtclインストール後にmakeやり直してmake installしたら、redisがインストールできました。
軽く動作テスト
サーバーを起動$ redis-server別のターミナル開いたりしてredisに入ります。
$ redis-cliここでredisに適当な値を入れてみましょう
redis> set kokoni_key_wo_set kokoni_value_wo_set (keyとvalueを指定してredisに書き込み) OK redis> keys * (keyの一覧を表示) 1) "kokoni_key_wo_set" redis> get kokoni_key_wo_set (指定したkeyのvalueを取得) "kokoni_value_wo_set" redis> setex aaa 10 bbb (10秒の有効期限を付けてkeyをセット) OK redis> get aaa (setexから10秒以内) "bbb" redis> get aaa (setexから10秒後) (nil)動いてますね。ちなみに今の状態では、一度redisサーバーを止めると、セットされていたkeyもクリアされます。
サーバー起動時にredisが起動するように設定
起動用スクリプトを作成して設定します。ログファイル出力先は/var/log/redis.log、起動スクリプトは/etc/init.d/redisに、設定ファイルは/etc/redis/6379.conf(これは起動スクリプトの通り)としました。なおとても参考にしたページはこちらです。
・Redis install memo - zonolog
・流行の技術に乗り遅れたくなくて、NodeとRedisとMongoとPythonとjQuery Mobileを一気に動かしてみた - カイワレの大冒険
起動スクリプトをコピーします。
$ sudo cp redis-2.4.16/utils/redis_init_script /etc/init.d/redis設定ファイルをコピーします
$ sudo mkdir /etc/redis $ sudo cp redis-2.4.16/redis.conf /etc/redis/6379.conf後で使うディレクトリを作成しておく
$ sudo mkdir /usr/local/redis/設定ファイルを編集
$ sudo vim /etc/redis/6379.conf編集は以下の通り。上の行を下の行に変える。
daemonize no デーモン化の設定を有効化。 daemonize yes pidfile /var/run/redis.pid 起動シェルの設定にあわせる。 pidfile /var/run/redis_6379.pid logfile stdout ログファイル出力を、標準出力からファイルに変更 logfile /var/log/redis.log dir ./ working directoryにdumpファイルが生成されるらしいので、変更します。 dir /usr/local/redis/設定は以上です。
□サーバーの起動と停止を確認
起動$ sudo /etc/init.d/redis startこの状態でredis-cliから何か値を入れて、動いている事を確認しましょう。 プロセスも確認します。
$ ps aux|grep redisリストの中にredisっぽいものがあれば大丈夫でしょう。 停止
$ /etc/init.d/redis stop停止した状態で/var/log/redis.logに何かログが残っていて、/usr/local/redis/の中にdump.rdbがあれば大丈夫です。ここに先程保存した値が格納されています。
□サーバー起動時に自動起動するよう設定
まず起動スクリプトをchkconfigに対応させます。/etc/init.d/redisに以下を適当に追加。ここを参考にしています。A CentOS initscript for Redis — Gist、redis 2.2.12のインストールメモ(amazon Linux) - 4丁目より# chkconfig: - 85 15 # description: redis-server # processname: redisそうしたらchkconfigに追加して登録します。
$ sudo chkconfig --add redis $ sudo chkconfig redis on確認
$ /sbin/chkconfig --list | grep redis redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off登録されていますね。
以上でredisのインストールが完了です。お疲れ様でした。
感想
・linuxの操作に慣れていないので不自然な所があるかもしれません。・yum install redisにすればよかったかな...。(version2.4.10がインストールされる)
資料
・KOSHIGOE学習帳 - [KVS][Redis] Redis 概要・Who's using Redis? – Redis
・ニコニコ生放送に見る Redis 活用ノウハウ:第1回 インメモリデータストア Redisの概要|gihyo.jp … 技術評論社
・CentOS5.4にredis2.4.9を入れてみる - するめとめがね
・インメモリKVSのRedisについて ≪ Rest Term
・Download – Redis
・redis 2.2.12のインストールメモ(amazon Linux) - 4丁目より
・Redis野良ビルド - 知識の屋-CLLDCOOL
・redisドキュメント日本語訳 — redis 2.0.3 documentation
・Redis install memo - zonolog
・流行の技術に乗り遅れたくなくて、NodeとRedisとMongoとPythonとjQuery Mobileを一気に動かしてみた - カイワレの大冒険
・TIPS/Linux/chkconfigとupdate-rc.d - masami Wiki*
・ぽちネット-Linux備忘録-Hints&Tips-自作サービスをchkconfigに登録する方法
・うえちょこ@ぼろぐ≫ [Linux]ランレベルの数値とchkconfigコマンド