node.jsでRedisを使ってみる【準備編】
久しぶりにnode.jsです。
普通に動くAPIを用意したいので、ストレージを選定する必要があります。
候補としては
- MySQL
- Redis
- MongoDB
の3つがあったのですが、MySQLは結構つかったことがあるので
あまり使ったことのないRedisにしました。
機会があればMongoDBも扱いたいです。
Redisのインストール
作業中のマシンはMacOSX10.7.5です。
Redisのインストールにはhomebrewを利用します。
ちなみにhomebrewのバージョンは0.9.4でした。
$ brew install redis
これだけでインストールできます。
私はredis-2.6.13がインストールされました。
マシンの起動時にredisを立ちあげたい場合は
インストール時のメッセージにしたがって
$ ln -sfv /usr/local/Cellar/redis/2.6.13/homebrew.mxcl.redis.plist ~/Library/LaunchAgents/
とすれば良いみたい。
とりあえず今すぐRedisを起動したい場合は
$ redis-server
とすると立ち上がってくれます。
サーバーが立ち上がったのでちょっとしたRedisの操作は
$ redis-cli
で試してみることができます。
node.jsとredisの連携
クライアントのインストール
node.jsからredisに接続するには、まずはパッケージをインストールします。
$ npm install redis
これでnode用のredisクライアントがインストールできます。
公式のリファレンスが充実しているので、コードを見ているだけでも
ある程度使い方がわかるかと思います。
mranney/node_redis · GitHub
node.jsからredisに接続する
redisのサーバーがすでに立ち上がっている状態であれば、
redisに接続したい箇所でクライアントを作成します。
var client = require('redis').createClient(); var key = 'hoge:fuga'; var value = 'piyo'; // 文字列を保存する client.set(key, value, function(){ // コールバック }); // 文字列を取得する client.get(key, function(err, val){ // コールバック if (err) return console.log(err); // エラーが無ければデータを取得できたということ console.log(val); });
様々なredisの使い方
基本的には文字列型のset, getが使えれば
keyの設計次第でなんとでもなりそうなredis。
JSON.stringify()でJavaScriptオブジェクトを文字列に変換して
任意のkeyに入れて、取り出す時はJSON.parse()して
JavaScriptオブジェクトに変換すれば一応運用できます。
var client = require('redis').createClient(); var obj = { "status": 200, "message": "hogefuga" }; // JSオブジェクトを文字列に変換してsetする client.set('key:test:0', JSON.stringify(obj), function(){}); // 文字列からJSオブジェクトに変換して利用する client.get('key:test:0', function(err, val){ if(err) return console.log(err); var data = JSON.parse(val); console.log(data); });
でもせっかくなので勉強がてらハッシュやリストのデータ型を
使ってみたいですね。
やっぱりこの記事くらいRedisを使い倒してみたいです。
Redisを使ったレコメンド機能の実装 - maaash.jp
おわりに
今回はnode.jsからredisにアクセスできるようになっただけです。
ちょっと内容が薄くなってしまった・・。
次回はチャットを題材にkeyの設計などを考えてみようと思います。