我正在构建一个Node.js / Express应用程序来处理(可能)多达数千个并发用户。他们将输入信息(存储在DynamoDB中),然后在不同的房间之间进行交互。我将使用Socket.io来捕获和发出用户在这些房间中进行的操作(例如聊天)。
问题
我不确定在用户浏览应用程序和登录/注销时跟踪用户的最佳方式。我们无法在服务器上存储会话数据(例如room_id,user_settings),尤其是当服务器崩溃时。
我有两个想法,我可以使用一些建议:
我是DynamoDB的新手,之前从未使用过Redis,所以任何建议都会有所帮助。谢谢!
答案 0 :(得分:1)
Redis是要走的路。它的安装非常简单,并且有用于用户会话的软件包,特别是如果您使用护照,例如passport.socketio。它将获取身份验证数据并使用sessionStore
在某处存储会话。
您不需要该插件才能使其正常工作 - 您可以随时拥有自己的中间件,将会话保存到某个商店。我能想到的,足够快的选项是
文件存储意味着您将会话保存为服务器上的文件,以便通过简单地读取文件而不是进行数据库查询来最小化读/写时间,这会随着时间的推移而变得昂贵。每个文件都有唯一的ID,因此查询速度非常快。这里的缺点是它很难维护 - 你会得到大量的文件夹和文件以及类似的东西
另一方面,Redis专门为那些东西而建。它是一个内存存储器,可以选择在本地保存数据(这意味着如果Redis服务器在某个时刻死亡,您可以恢复它)。它非常快速有效,因为它在内存中。好处是它是一个独立的过程,您不必关心内存管理 - 您可以将其配置为使用特定数量,它将以您具有最佳性能的方式处理所有信息(当内存不足时,旧数据保存并内存不足。)所以我的建议是不要太担心未知 - Redis很简单,你会在几个小时(或最多几天)内习惯它。