启用集群的 NodeJS 缓存 mysql 数据
NodeJS cache mysql data whith clustering enabled
我想缓存从我的 MySQL 数据库中获得的数据,为此我目前将数据存储在一个对象中。
在查询数据库之前,我先检查指定对象中是否存在所需的数据。如果没有,我会查询并插入它。
这很好用,我的网络服务器现在只获取一次数据并重新使用它。
我现在担心的是:在使用nodejs的集群特性时,是否必须考虑并发writes/reads对象中的此类数据结构?
您在 Node.js 程序中编写的 JavaScript 的每一行都是线程安全的,可以这么说 - 在任何给定时间,只会执行一条语句。您可以执行异步操作的事实仅在对程序员完全透明的低级实现中实现。准确地说,当你做一些 input/output 操作时,你只能 运行 一些代码以 "truly parallel" 的方式,即读取文件,进行 TCP/UDP 通信或当你产生一个子进程。即便如此,与您的应用程序并行执行的唯一代码是 Node 的原生 C/C++ 代码。
由于您使用 JavaScript 对象作为缓存存储,因此可以保证没有人会同时读取或写入 from/to 它。
至于 cluster,每个工作人员都创建了自己的进程,因此代码中存在的每个 JavaScript 变量或对象都有自己的版本。
我想缓存从我的 MySQL 数据库中获得的数据,为此我目前将数据存储在一个对象中。
在查询数据库之前,我先检查指定对象中是否存在所需的数据。如果没有,我会查询并插入它。
这很好用,我的网络服务器现在只获取一次数据并重新使用它。
我现在担心的是:在使用nodejs的集群特性时,是否必须考虑并发writes/reads对象中的此类数据结构?
您在 Node.js 程序中编写的 JavaScript 的每一行都是线程安全的,可以这么说 - 在任何给定时间,只会执行一条语句。您可以执行异步操作的事实仅在对程序员完全透明的低级实现中实现。准确地说,当你做一些 input/output 操作时,你只能 运行 一些代码以 "truly parallel" 的方式,即读取文件,进行 TCP/UDP 通信或当你产生一个子进程。即便如此,与您的应用程序并行执行的唯一代码是 Node 的原生 C/C++ 代码。
由于您使用 JavaScript 对象作为缓存存储,因此可以保证没有人会同时读取或写入 from/to 它。
至于 cluster,每个工作人员都创建了自己的进程,因此代码中存在的每个 JavaScript 变量或对象都有自己的版本。