NodeJS:在内存缓存中使用性能和存储来保持持久性

时间:2018-06-02 09:30:44

标签: javascript node.js

我想知道我的以下方法是否有意义,或者是否存在我错过的缺陷:

问题:SQL查询很慢。内存缓存不是持久的。

我的想法是在以下事项中编写我的nodejs进程:

  1. 初始化
  2. 从sql db获取当前状态并保留变量
  3. 对变量运行所有请求查询
  4. 更新并更改变量,然后更新sql
  5. 仅在sql成功更新后才响应
  6. 通过这种方法,我可以完全消除SQL在多个表上运行复杂查询,并且可以使用id作为对象键轻松有效地检查内容。

    由于NodeJS是单线程的,我甚至拥有高效的“事务”功能,因为内存变量的更新将以原子方式进行。

    虽然这种方法不允许横向缩放,但我觉得这对我的大部分项目都足够了。

    我错过了一些根本性的缺陷吗?

1 个答案:

答案 0 :(得分:0)

我想到的事情:

  1. 您的内存限制:您计划在这些变量中保留多少数据?这些数据会随着时间的推移而变大吗如果是这样,如何管理可用内存?

  2. 如果您执行复杂的“查询”,则不会获得索引(B-Trees)的SQL优势。所以你的查询必须是简单的查找。对于更复杂的查询,您可以考虑数据的临时/内存表。在SQLite中,您可以使用:rc = sqlite3_open(":memory:", &db);https://www.sqlite.org/inmemorydb.html)。

  3. 我会利用节点child_process功能让你的新机制远离你的主线程(https://nodejs.org/api/child_process.html)。