会redis删除我的旧express.js会议?
我正在使用redis作为我的会话存储为node.js +快速应用程序…它会自动删除旧会话过期后吗?
…或者我需要做一些清理在服务器端? (所以数据库不会变得太大)
var RedisStore = require('connect-redis')(express) app.use(express.session({ store: new RedisStore({ host: cfg.redis.host, db: cfg.redis.db }), secret: 'foobar' }));
是的, connect-redis
会使Redis在会话过期时清除会话。
如果我没有记错的话,默认的会话超时是24小时,对我来说在相当长的时间内保持闲置的内存,但是你可以给它一个ttl
参数来configuration(秒)你想在Redis之前保持会话的时间到期他们。
如果您想确保Redis能够为您清理所有问题,只需将超时设置为30秒,并在超时过期后查看Redis;
app.use(express.session({ store: new RedisStore({ host: cfg.redis.host, db: cfg.redis.db, ttl: 30 }), secret: 'foobar' }));
这里提到了 ttl
选项, 这里有一些额外的细节说明它如何与其他选项交互。
它按预期工作。 如果我做一个浏览器会话(当用户代理closures时会过期),它会在redis中保存24小时(我没有在connect-redis中设置ttl选项)。
如果我设置一个cookie在2周内过期,它会在redis中生存14天。
你可以检查这些命令:
start redis-cli > keys * > ttl <key>