【问题标题】:In memory storage on nodejs server在 nodejs 服务器上的内存存储中
【发布时间】:2016-03-22 03:49:42
【问题描述】:

似乎有相当多的有前途的软件包没有明确的建议,哪些是最快的、可扩展的和更节省内存的。

  1. npm install memoizee
  2. npm 安装memcached
  3. lru-cache
  4. npm 安装memory-cache
  5. npm 安装node-cache

任何可靠的信息来源/个人经验都会有所帮助。
所以基本用法是简单的键:值存储。
只需要知道这些不同商店的底层架构是否相似/不同,如果不同,那么哪些是可扩展的。

[express-session 使用其中的哪一个来实现 MemoryStore。]

【问题讨论】:

  • 您的问题类似于“哪个数据库最好”?实际上,这是一个复杂的问题,取决于一系列要求和权衡,在某些情况下,还取决于首选的编程风格。在许多情况下,您也可以简单地使用 Javascript 对象将内容存储在内存中,而无需获取任何类型的外部包/库。这一切都取决于您的要求。

标签: node.js caching express memcached


【解决方案1】:

“哪个更好”取决于您的要求,例如流量,您希望在内存中存储多少缓存等。

当您选择内存存储时,请记住 node.js 是单线程的,而 for 循环是阻塞代码。如果您查看大多数这些包(例如 node-cache)的源代码,它们都有 for 循环,遍历所有缓存项目以进行 TTL 检查。因此,如果您存储 10000 个对象,您的应用程序将被阻塞,直到完成 10k 次迭代。所以要小心你的选择。

【讨论】:

  • 所以基本用法是简单的 key:value 存储。我只需要知道这些不同存储的底层架构是否相似/不同,如果不同则可扩展。
  • 它们大多相似,除了 memcached 允许您设置集群和扩展。我不建议您使用列表中的其他包裹来存储大量物品。
【解决方案2】:

express-session 的依赖项位于 Github 的 package.json 中。我没有看到您列出的任何存储机制。

然后,如果您查看MemoryStore 对象here 的代码,您会发现它只是使用一个Javascript 对象来存储由sessionId 索引的会话列表。

【讨论】:

  • 感谢您提供的信息,我对问题进行了一些编辑。您能告诉我 5 个 npm 包中的哪一个最适合 nodejs 服务器上的内存存储。或者还有其他更好的包吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多