繁体   English   中英

Node.js,将对象存储在内存或数据库中?

[英]Node.js, store object in memory or database?

我正在开发一个节点js应用程序,该应用程序从集中式数据库中读取json列表

列表Object约为1.2mb(如果保存在txt文件中)

需求就像,数据要每24小时刷新一次,所以我为此保留了一项cron作业

现在,在获取数据之后,我将其保存到在我的服务器上本地运行的db(couchbase)中

数据访问非常频繁,我每秒获得大约1或2个请求,几乎所有请求都需要该Object

将该Object保留为节点js中的内存对象还是将其保留在本地db中是好事吗?

两者的优缺点是什么?

Object仅读取所有请求,仅由cron作业写入一次

这是一个高端系统,i7四核,16GB内存

  1. 这取决于您的硬件
  2. 如果此对象是不可变的,则根据请求,最好将其保留在内存中。 如果否,则视情况而定。
  3. 无论如何,工作流与db的开放连接-获取数据-返回结果-空闲数据将比在内存中缓存消耗更多的资源。

例如,在我们的项目中,我们处理高清图像,并将所有对象保留在内存中-原始格式为3-7mb。 测试表明,这比使用任何缓存系统(例如redis或沙发底座)要有效得多。

我会将最新版本保留为内存对象,并存储它。 这样,如果发生任何崩溃,您将拥有一个备份。 但是,如果您编辑文件,我只会将其保留为数据库对象。

每2秒访问一次该对象的DB可能会正常工作,但是1.2MB的内存并不多,如果可以保留该内存,则服务器就不会遇到问题。

与内存相比,DB有点慢,但具有(很可能)是线程安全的优点。 如果要编辑文档,则可能会遇到内存对象的线程问题。

在了解了应用程序和要求之后,您应该能够知道是否需要线程安全的数据库,或者是否需要保护服务器上的内存。 如果您不知道,我们需要查看实际的代码和用例,以告诉您您可以做的最好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM