4

私の高速アプリは認証セッションの保存に PassportJS を使用していますが、redis ストアにとんでもない数のキーが作成され、すべてのキーが同じように見えます。

"{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}"

彼らはTTLを持っていますが、店は正当な理由もなくサイズが大きくなっています. なぜこれらが作成されているのか分かりますか? 私のキーは次のようになります。

"sess:8R3A-k6dARJvxXFdAXr5nTG7MeC7JTxb"
"sess:s4VYC-k-nmfSf7n-qGQJimFmt30EYNDp"
"sess:BS7WO92Nyl5R0wAbJ-Vo9o8w1apu0kp7"
"sess:0B1AKS6-MCclPvOXV0nlvNio8U8fxyQO"
"sess:v0UWf60LMwKmMVZgo4RWumX313yPsiD0"

目で見ると、約 10 個のキーが毎秒または 2 秒ごとに作成されています。

これは私のセッションコードがどのように見えるかです:

var express = require('express'),
    ....
    session = require('express-session'),
    redisStore = require('connect-redis')(session);

...
    app.use(express.static(path.resolve('./public')));

    //Redis
    var redisClient = redisHelper.init();

    app.use(session({
        secret: '...',
        store: new redisStore({
            client: redisClient,
            ttl: 86400
        }),
        resave: false,
        saveUninitialized: false,
        cookie:{maxAge:86400}
    }));

    //Passport
    app.use(passport.initialize());
    app.use(passport.session());
...

Redis init 関数は、redis クライアントのインスタンスを返します。

exports.init = function () {
    redisClient = redis.createClient(config.redis.port, config.redis.server, {});

    redisClient.auth(config.redis.auth);

    redisClient.on('error', function (error) {
        //TODO: log the error
        winston.error('Error while talking to Redis', {message: error});
    });

    return redisClient;
};
4

0 に答える 0