Node/Express 应用程序中实际存储的会话数据在哪里?
Where is session data actually stored in a Node/Express application?
会话数据实际存储在 Express 应用程序中的什么位置?是否有某种内置缓存让 Node 能够从中访问会话数据?会话数据是否存储在内存中?开发者是不是经常会把session数据保存到Redis中?
Express 中没有内置会话数据。有一些外部模块,例如 express-session,您可以将它们引入您的项目中,以便创建一个用户会话对象,以便在您的 Express 应用程序中使用。
特别是 express-session,它有一个内置的“不适用于生产”的内存存储(因此会话数据保存在内存中并且不会在服务器重启后继续存在)。但是,存储是一个可插入的项目,并且有许多会话存储选项,如所列 here。它们在各种不同的数据库中提供存储(用于持久会话存储)。查看所有各种会话存储选项的列表。您可以看到常见数据库的会话存储驱动程序,例如 MongoDB、Microsoft SQL 服务器、DB2、Mysql、Redis、各种基于内存的存储,甚至一些云-基于商店。
因此,您的选择范围很广。
Is it often the case that developers will save session data to Redis?
如果您的特定要求与 Redis 的优势相匹配,Redis 是一个受欢迎的选择。如果您不一定需要永久会话存储,将 运行 您的服务器运行在某些版本的 Unix 上,并且您有一个集群应用程序需要访问来自多个服务器进程的会话数据(因此进程内内存存储无法使用)。
不需要长期持久性的小型部署可以使用生产就绪的基于内存的存储之一。 Windows 部署会选择 Windows 比 Redis 更受支持的数据库。如果您已经在使用一种受支持的数据库,许多人会选择该数据库用于会话,只是为了简化部署、管理、支持和许可(为什么要添加另一种类型的数据库)。
会话数据实际存储在 Express 应用程序中的什么位置?是否有某种内置缓存让 Node 能够从中访问会话数据?会话数据是否存储在内存中?开发者是不是经常会把session数据保存到Redis中?
Express 中没有内置会话数据。有一些外部模块,例如 express-session,您可以将它们引入您的项目中,以便创建一个用户会话对象,以便在您的 Express 应用程序中使用。
特别是 express-session,它有一个内置的“不适用于生产”的内存存储(因此会话数据保存在内存中并且不会在服务器重启后继续存在)。但是,存储是一个可插入的项目,并且有许多会话存储选项,如所列 here。它们在各种不同的数据库中提供存储(用于持久会话存储)。查看所有各种会话存储选项的列表。您可以看到常见数据库的会话存储驱动程序,例如 MongoDB、Microsoft SQL 服务器、DB2、Mysql、Redis、各种基于内存的存储,甚至一些云-基于商店。
因此,您的选择范围很广。
Is it often the case that developers will save session data to Redis?
如果您的特定要求与 Redis 的优势相匹配,Redis 是一个受欢迎的选择。如果您不一定需要永久会话存储,将 运行 您的服务器运行在某些版本的 Unix 上,并且您有一个集群应用程序需要访问来自多个服务器进程的会话数据(因此进程内内存存储无法使用)。
不需要长期持久性的小型部署可以使用生产就绪的基于内存的存储之一。 Windows 部署会选择 Windows 比 Redis 更受支持的数据库。如果您已经在使用一种受支持的数据库,许多人会选择该数据库用于会话,只是为了简化部署、管理、支持和许可(为什么要添加另一种类型的数据库)。