george tsubota

自分に自信を持て!ー>オレ

node.js+expressでsession管理をconnect-memcachedが使えず、connect-mysql-sessionにしました。

半月前に以下の記事を書きました。

http://localhost:3000/からのレスポンスがやたら遅い。

 

その後、ちょこちょこトライしていたのですが、結局はconnect-memcachedが使えず、connect-mysql-sessionに変更するとあっさり使えたので、もうこれにしよう・・・。

というのが、現時点の話です。加えて、connect-mysql-sessionもgitを丸写ししただけなので、これから掘り下げます。

 

アーカイブのため、「connect-memcachedのコードと現象とエラー」、「connect-mysql-sessionのコード」を以下に書きます。(コードはgitから抜粋)

 

connect-memchached

コード
  var express = require('express');

  var MemcachedStore = require('connect-memcached')(express);
...
app.use(express.session({ secret: 'CatOnTheKeyboard', store: new MemcachedStore }));
...

※詳細はこちらを参照してください(https://github.com/balor/connect-memcached)。

現象

レスポンスがしばらく返ってきません。画面が表示される場合もありますが、次のようなエラーメッセージを確認しました。

エラーメッセージ

MemcachedStore::Issue @ 127.0.0.1:11211: Error: connect ECONNREFUSED, undefined attempts left

 

connect-mysql-session

コード(app.js)
var express = require('express'),
    MySQLSessionStore = require('connect-mysql-session')(express);
...
app.use(express.session({
    store: new MySQLSessionStore("dbname", "user", "password", {
    }),
    secret: "keyboard cat"
}));
...

※詳細はこちらを参照してください(https://github.com/CarnegieLearning/connect-mysql-session)。