在Node.js服务器上的内存存储

3
有许多有前途的软件包,但没有明确的建议哪个是最快、可扩展的,哪个更节省内存。
  1. npm install memoizee
  2. npm install memcached
  3. lru-cache
  4. npm install memory-cache
  5. npm install node-cache
任何可靠的信息来源/个人经验都会有所帮助。
因此,基本用法是简单的键值存储。
只需要知道这些不同存储的底层架构是否相似/不同,如果不同,则哪一个是可扩展的。
[此外,express-session 中使用了哪个来实现 MemoryStore?]

1
你有点像在问“哪个数据库最好”这样的问题。实际上,这是一个复杂的问题,它取决于一系列的需求和权衡,有时还涉及到首选的编程风格。在许多情况下,你也可以只使用 Javascript 对象来存储内存中的东西,而不需要获取任何外部的包/库。一切都取决于你的需求。 - jfriend00
2个回答

3
express-session的依赖关系在其package.json中已经列出。我没有看到你列出的任何存储机制。
然后,如果您查看MemoryStore对象的代码here,您会发现它只是使用Javascript对象来存储按sessionId索引的会话列表。

感谢提供的信息,我已经稍微编辑了一下问题。您能否告诉我在Node.js服务器上哪个npm包是最适合内存存储的?或者是否有其他更好的包可用? - rnjai

3
"哪个更好" 取决于您的需求,例如流量体积、内存缓存的存储容量等。
选择内存存储时,请记住 Node.js 是单线程的,并且 for 循环是阻塞代码。如果您查看大多数这些包(如 node-cache)的源代码,它们都有 for 循环,遍历所有缓存项目进行 TTL 检查。因此,如果您存储了 10000 个对象,则您的应用程序将被阻塞,直到完成 10k 次迭代。因此,请谨慎选择。

所以基本用法是用于简单的键值存储。我只需要知道这些不同存储的底层架构是否相似/不同,如果不同,哪一个是可扩展的。 - rnjai
1
它们大多数都很相似,除了memcached可以让你设置集群和扩展。我不建议在你的列表中使用其余的包来存储大量的项目。 - user3658423

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接