Tokyo Cabinet / Tokyo Tyrantに代表されるKey-Value Storage,いわゆるKVSは多くのプロダクトが乱立してなかなか違いを理解するのも難しい状況になりつつあるのですが、ここ数日はredisに注目をしています。redisとは何ぞやというと、公式サイトには次のような特徴が挙げられています。
- memcachedのようないわゆるKVS
- valueにはStringだけではなく、List, Setも利用できる
- データに対するpush/pop, add/removeのような操作はすべてatomicな操作
- 通常はメモリ上で動作するが、定期的にデータをディスクに書き出す(常に書き出すような設定も可能)
- Master-Slaveのレプしケーションをサポート
- Ruby, Python, Perl, Java...などの各言語のバインディングを用意
と、かなり豪華なスペックで、なんでもかかってこい!なプロダクトです。国内の利用例はまだ聴いた事無いですが、海外ではgithubやCraigslistが採用したことでここ最近有名になってきました。
さて、そんなredisの開発環境を整えてみたいと思います。環境はMac OSX 10.5。
redisのインストール
ソースコードから入れてもいいのですが、Macの場合は、MacPortsでインストール可能です。
$sudo port -d sync
で、インストールリストを最新の状態にしておいて
$sudo port install redis
で、インストールされる、、はずなのですが、僕の環境だと途中で止まりました。
$ sudo port install redis ---> Fetching redis ---> Attempting to fetch redis-1.2.2.tar.gz from http://redis.googlecode.com/files/ ---> Verifying checksum(s) for redis ---> Extracting redis ---> Configuring redis ---> Building redis ---> Staging redis into destroot ---> Creating launchd control script ########################################################### # A startup item has been generated that will aid in # starting redis with launchd. It is disabled # by default. Execute the following command to start it, # and to cause it to launch at startup: # # sudo launchctl load -w /Library/LaunchDaemons/org.macports.redis.plist ########################################################### ---> Installing redis @1.2.2_0 ---> Activating redis @1.2.2_0 Error: Target org.macports.activate returned: couldn't open "/opt/local/var/log/redis.log": no such file or directory Error: Status 1 encountered during processing.
なんかlogディレクトリがないみたいなので、ディレクトリ作成してから一度アンインストールしてやりなおしてみます。
$ sudo mkdir /opt/local/var/log $ sudo port uninstall redis $ sudo port install redis ================================================================== * To start up a redis server instance use this command: * * redis-server /opt/local/etc/redis.conf * ================================================================== ---> Cleaning redis
これで、インストールできました。サービスに登録したい場合は、途中のログに書いてあるとおり、
sudo launchctl load -w /Library/LaunchDaemons/org.macports.redis.plist
で、OKです。
Rubyのバインディングのインストール
僕は普段Rubyを使うので、Rubyのバインディングもあわせてインストールしてみることにします。gemでインストール可能です。
sudo gem install redis
redisの起動
redisを起動するときは、redis-serverを実行します。MacPortsでインストールした場合、/opt/local/bin にバイナリがインストールされてあるので
sudo /opt/local/bin/redis-server /opt/local/etc/redis.conf
で、起動します。confの中には、起動するときのポート番号や、ディスクに書き出すタイミングや条件などの設定項目があります。(ちなみに、起動時に設定ファイルのパスを与えていますが、これはビルド時?に設定しておけば、実行時に与える必要は無いようです。ただ、MacPorts利用時もそれが可能なのかどうか?は不明です)
では、実際に動作を確認してみたいとおもいます。確認するときは、redis-serverと同じ場所にあるredis-cli, またはtelnetで6379に対して接続してコマンドを入力します。(今回はtelnetで接続して生のコマンドを叩いて確認してみます)ValueをStringとして扱うときは、
set
set foo 3 bar +OK get foo $3 bar
listとして扱うときは、lpush
lpush artists 8 fishmans +OK lpush artists 9 clammbon +OK lpush artists 7 polaris +OK lrange artists 0 -1 *3 $7 polaris $8 clammbon $8 fishmans
Listの要素追加もStringの要素追加と同じでO(1)で実現できるのがredisのポイントですね。実際の細かなコマンドの仕様については、リファレンスを参照ください。
ここまでざっと環境構築まで確認できたので、次回はもうすこしredisを使い倒してその結果をまとめたいと思います。
Google Adsense
Social bookmark comment : 0
No comment.
Comment : 0
Trackback : 1
- TrackBack URL for this entry
- http://blog.katsuma.tv/mt-tb.cgi/217
- Listed below are links to weblogs that reference
- Mac OSXにredisをインストール from blog.katsuma.tv
- redisとRailsでTwitterクローン「RedTweet」を作りました from blog.katsuma.tv 2010-03-25 (木) 02:55
- 前回「Mac OSXにredisをインストール」で、redisを動かす環境までは...
2010/03/22 (Mon)