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 — Gistredis 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コマンド