首页 文章

会话存储和数据库之间有什么区别

提问于
浏览
10

我一直在尝试使用socket.io在node.js应用程序中实现身份验证和会话管理 .

从我发现的几乎所有资源中,我都遇到了“会话商店”一词 .

有一些开源工具可以为我们处理会话,但我们必须为它们提供会话存储 .

有些工具内置存储器用于内存中的会话,例如模块express-session在内存会话存储中带有默认值,但也有此警告:

警告默认的服务器端会话存储MemoryStore故意不是为 生产环境 环境设计的 . 它会在大多数情况下泄漏内存,不会扩展到单个进程,并且用于调试和开发 .

所以我搜索了可用的稳定会话存储,结果发现大多数名称都是我听说过的数据库 .

例如,这是我遇到的GitHub上的list of session storesanother one .

名称包括MongoDB,MySQL,SQLite,cassandra,firebase等,因此存在混淆 .

所以问题是,会话存储和数据库是一样的吗? (我可以这样想 - 当我们使用数据库存储会话详细信息时,我们将其称为会话存储,但它实际上是一个数据库)

如果没有,它们有何不同......?

2 回答

  • 5

    会话存储是会话数据存储在服务器上的地方 . 在Web上,它通常由存储在客户端浏览器中的cookie识别 . 因此,它允许您的应用识别用户并让他保持登录状态 .

    会话可以是内存,某些数据库,简单文件,也可以是您可以用来存储会话数据的任何其他位置 .

    如果项目使用某个数据库,则可以将会话存储配置为使用相同的数据库,以避免在服务器上只有用于会话存储的另一个数据库 .

    Differences between different session stores:

    • 内存会话存储将在每个应用程序重新启动时重置 . 也是最快的 .

    • 数据库会话存储,对于app re-lauch来说是安全的 . 在某些时候,您将拥有许多您可能想要清理的会话对象 . 甚至可以从不同的应用程序访问存储在数据库中的相同会话 .

  • 1

    会话存储是一种将关于用户的信息存储为具有唯一标识符的会话的方法 . 它可以存储在内存或数据库中 . Socket.io 可以利用 express app中使用的相同会话(id) socket-express-session 包,如果我没有记错的话 .

    然后,您可以使用会话信息来授予/限制访问权限 .

相关问题