![](/img/trans.png)
[英]node.JS - express - connect-redis how to delete a record
[英]Node/Express with connect-redis, how handle session expiry
我有一個使用redis作為會話存儲的Node / Express應用程序。
我對本屆會議期滿的處理有疑問。
我想要一個活動的會話,直到關閉瀏覽器為止,所以我沒有設置會話到期時間。
這樣做會話cookie可以正常工作,但是我對Redis表示懷疑。
似乎存儲在Redis DB中的鍵/值對永遠不會過期。
如何正確處理呢?
有沒有一種方法可以配置redis銷毀某個空閑時間存儲的值?
還是在應用程序內部調用connect-redis時更好地設置TTL?
應用程序內部會話的實際配置:
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(session({
store: new RedisStore({port:6379, host: 'localhost'}),
secret: "my-secret-here",
resave: false,
saveUninitialized: true }));
將Redis與Express-Session一起使用時,可以使用Express-Session中的touch()方法來重置TTL。 因此,如果在創建會話時設置了TTL,請在不希望會話過期的路由上執行以下操作:
api.get("/someRoute/", (req, res) => {
req.session.touch();
// Whatever else you need to do
res.sendStatus(200);
}
這將重置Redis上的TTL,並假設客戶端仍在訪問您的API,從而防止會話過期-我假設,如果客戶端與您的API的交互時間不夠長,則意味着瀏覽器已關閉或完成使用您的應用。
您可以在創建會話存儲時指定一個ttl。 您可以在自述文件中找到更多選項。
app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat',
ttl : 20 // ttl is in seconds. From the readme.
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.