Redisを使ってexpressでセッション管理をする
expressでユーザのセッションを引き継いでページ遷移させたいっていうのが結構あります。
その場合、よくRedisというキーバリューストア(KVS)モデルのデータベースが用いられるようです。
これまでのWebアプリケーションがMySQL + memcachedで構成されていたことを考えると
node.jsはMongoDB + Redisで構成されることがスタンダードになっていくのでしょうか。
さて、そのRedisのインストールは本家ページ(Redis)からwgetして解凍します。
$ wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz $ tar xzf redis-2.4.6.tar.gz $ cd redis-2.4.6 $ make
サーバの立ち上げは
$ src/redis-server
で行います。
そのあとは例によってnpmモジュールのインストール。
$ npm install redis redis-client
Redisを用いてexpressフレームワークでセッションを使うときは次のように書きます。
var express = require('express'), RedisStore = require('connect-redis')(express); app.configure(function () { app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.session({ secret: 'your secret', store: new RedisStore, cookie: { maxAge: 3 * 60 * 60 * 1000, // 3 hours httpOnly: false } })); });
これで
req.session.hogehoge = hoge; // setter var session = req.session.hogehoge; // getter
みたいにしてセッションの値を保存したり参照できたりします。
また、Redisはサーバを落とさない限り、アプリを落としてもセッションが保存されているので、開発する時にも便利です。