node.js - NodeJS自定义session Store,清除过期session

标签 node.js session store connect arangodb

我目前正在为 ArangoDB (connect-arango) 开发 session 存储。它的工作方式几乎与 MongoDB session 存储(connect-mongo,因此为“connect-arango”)相同,但问题是 ArangoDB 没有为其条目内置 TTL。

MongoDB 有这个,而且这不是问题。但在 ArangoDB 中,我必须在 session 存储中的某个位置执行此操作。

每 60 秒检查一次过期 session (使用 setTimeout)是否足够,或者我应该使用其他方法,例如每次调用“get”函数时进行检查?

我将使用 AQL 查询来清除它们,类似于:

FOR s IN sessions
  FILTER s.expires < DATE_NOW()
  REMOVE s IN sessions

如果用户要清除他的 cookie,则永远不会使用“get”函数访问 session ,这意味着我无法检查 session 是否已过期。

但是,我可以做的是每次调用“get”函数时运行上述查询,但我认为这是完全没有必要的,并且会给服务器带来更多负载。

编辑:以免有人误解,我知道如何清除过期 session ,只是不知道运行清除功能的频率(在本例中,是上面的 AQL 查询)。

最佳答案

如果您将跳过列表索引设置为过期,则每 60 秒运行一次上述查询不会产生任何问题。您还可以在 ArangoDB 中创建一个定期作业,每分钟运行一次此查询。

Alan Plum 向 ArangoDB 添加了一个 session Foxx 应用程序,它基本上实现了上述所有功能。我不确定他是否已经发布了文档。 API 文档可见为

localhost:8529/_db/_system/_admin/aardvark/standalone.html#!/sessions

如果您对此 Foxx 应用程序有任何疑问,请随时联系 hackers (at) arangodb.org 的 Alan

关于node.js - NodeJS自定义session Store,清除过期session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607889/

相关文章:

javascript - 为什么我的 NodeJS 脚本在 fs.readFile 和 fs.appendFile 处理大量文件时陷入困境。

javascript - Node.Js API 等待 dynamodb 调用完成以发送到浏览器

java - Tomcat session 的 Java 类是什么?

asp.net - ASP.NET 中的默认 session 超时值是多少?

angular - 是否可以在单独的 Angular(子)项目之间共享 NGXS 存储?

node.js - 将预编译的二进制文件捆绑到 Electron 应用程序中

javascript - 如何在 Node.js 中将灰度图像矩阵转换为图像

c# - 首次 Twitter OAuth 请求后 session 丢失

javascript - 使用列名获取存储值 - EXTJS 4

java - 在java中备份数组