如何在nodejs的多个实例中共享一个对象?
How to share an object in multiple instances of nodejs?
我有一个功能,其中用户 post 数据包含少量用户 ID 和一些与这些用户 ID 相关的数据,我将其保存到 postgresql 数据库中。我想将这个返回的用户 ID 保存在某个对象中。
我只想检查此对象中是否存在用户标识,然后只调用数据库。此检查发生得非常频繁,所以我不能每次都点击数据库来检查是该用户 ID 有任何数据。
问题是,我有 多个 nodejs 实例 运行 在不同的服务器上,所以我怎么能有一个共同的对象。
我知道我可以使用 redis/riak 在服务器上存储键值,但不想增加 complexity/learning 只是为了一个案例。(我从未使用过 redis/riak之前。)
有什么建议吗?
如果您的数据在不同服务器上的不同 node.js 进程中,那么唯一的选择是使用网络与某些公共服务器进行跨服务器通信以获取值。有很多不同的方法可以做到这一点。
- 将值放入数据库并始终从公共数据库中读取值
- 将您的 node.js 个实例之一指定为主实例,并让所有其他 node.js 个实例在需要时随时询问主实例的值
- 使用网络将值同步到每个 node.js 进程,以便每个 node.js 实例在其自己的进程中始终具有当前值
- 使用共享文件系统(有点像穷人的数据库)
由于您已经有一个数据库,您可能只想将它存储在您已有的数据库中并从那里查询它,而不是为了这个用途而引入另一个带有 redis 的数据存储。如果可能,您可以让每个进程在一段时间内缓存该值,以提高频繁请求的性能。
我有一个功能,其中用户 post 数据包含少量用户 ID 和一些与这些用户 ID 相关的数据,我将其保存到 postgresql 数据库中。我想将这个返回的用户 ID 保存在某个对象中。
我只想检查此对象中是否存在用户标识,然后只调用数据库。此检查发生得非常频繁,所以我不能每次都点击数据库来检查是该用户 ID 有任何数据。
问题是,我有 多个 nodejs 实例 运行 在不同的服务器上,所以我怎么能有一个共同的对象。
我知道我可以使用 redis/riak 在服务器上存储键值,但不想增加 complexity/learning 只是为了一个案例。(我从未使用过 redis/riak之前。)
有什么建议吗?
如果您的数据在不同服务器上的不同 node.js 进程中,那么唯一的选择是使用网络与某些公共服务器进行跨服务器通信以获取值。有很多不同的方法可以做到这一点。
- 将值放入数据库并始终从公共数据库中读取值
- 将您的 node.js 个实例之一指定为主实例,并让所有其他 node.js 个实例在需要时随时询问主实例的值
- 使用网络将值同步到每个 node.js 进程,以便每个 node.js 实例在其自己的进程中始终具有当前值
- 使用共享文件系统(有点像穷人的数据库)
由于您已经有一个数据库,您可能只想将它存储在您已有的数据库中并从那里查询它,而不是为了这个用途而引入另一个带有 redis 的数据存储。如果可能,您可以让每个进程在一段时间内缓存该值,以提高频繁请求的性能。