11

node.js + Express アプリのセッション ストアとして redis を使用しています...古いセッションが期限切れになると自動的に削除されますか?

...または、サーバー側でクリーンアップを行う必要がありますか? (データベースが大きくなりすぎないように)

  var RedisStore = require('connect-redis')(express)

  app.use(express.session({
    store: new RedisStore({
      host: cfg.redis.host,
      db: cfg.redis.db
    }), 
    secret: 'foobar'
  }));
4

2 に答える 2

10

はい、connect-redis有効期限が切れたときに Redis がセッションを消去します。

私の記憶が正しければ、デフォルトのセッション タイムアウトは 24 時間です。これは、何かをメモリ内でアイドル状態に保つのにかなり長い時間ですが、ttlRedis の有効期限が切れるまでセッションを保持する時間を (秒単位で) 構成するパラメーターを与えることができます。彼ら。

Redis がクリーンアップすることを自分で確認したい場合は、タイムアウトを 30 秒に設定し、タイムアウトが経過した後に自分で Redis を確認してください。

app.use(express.session({
  store: new RedisStore({
    host: cfg.redis.host,
    db: cfg.redis.db,
    ttl: 30
  }), 
  secret: 'foobar'
}));

ttlオプションはここで言及されており、他のオプションとどのように相互作用するかについては、ここでいくつかの追加の詳細があります

于 2012-09-23T06:32:59.410 に答える
5

期待どおりに動作しています。ブラウザーのみのセッション (ユーザー エージェントが閉じると Cookie が期限切れになる) を実行すると、redis に 24 時間存在します (connect-redis で ttl オプションを設定しませんでした)。

Cookie の有効期限を 2 週間に設定すると、redis に 14 日間保存されます。

次のコマンドで確認できます。

start redis-cli
> keys *
> ttl <key>
于 2012-09-23T07:13:33.057 に答える