Javascript 节点是否有状态?节点能否在内存中维护变量
节点是否有状态 如果我想建立一个索引来保存在内存中,它会在不同的连接中持续存在吗?我只是想知道这是否可能。例如,我们有一个java服务器,它在内存中维护一个hashmap以加速某些搜索查询。当事情发生时,它会修改它。在Node中是否可以这样做Javascript 节点是否有状态?节点能否在内存中维护变量,javascript,node.js,Javascript,Node.js,节点是否有状态 如果我想建立一个索引来保存在内存中,它会在不同的连接中持续存在吗?我只是想知道这是否可能。例如,我们有一个java服务器,它在内存中维护一个hashmap以加速某些搜索查询。当事情发生时,它会修改它。在Node中是否可以这样做 谢谢 是的,您可以在进程的生命周期内将状态保留在内存中。有可用于哈希映射、LRU缓存和其他常用数据结构的库。绝对可以。下面是一个非常简单的示例,说明了我认为您正在寻找的内容(修改了中的示例代码): 请注意,除了最短暂的数据类型外,通常不会执行此类操作。如果
谢谢 是的,您可以在进程的生命周期内将状态保留在内存中。有可用于哈希映射、LRU缓存和其他常用数据结构的库。绝对可以。下面是一个非常简单的示例,说明了我认为您正在寻找的内容(修改了中的示例代码):
请注意,除了最短暂的数据类型外,通常不会执行此类操作。如果您需要一些更持久的东西,请考虑使用类似于的东西,您可以在节点中使用与静态变量等效的变量。第一次需要文件时,节点将运行该文件中的代码。这意味着,如果在范围级别上定义的变量等于或高于
module.exports
,则始终可以从内部闭包访问这些变量
(function(){
var aStaticVariable = 123;
module.exports = function() {
// an instantiable object
}
})();
您还有全局变量:
global.aGlobalVar = "foo";
当然这是可能的。是的,这可以通过Node轻松完成。-似乎模块被缓存了?我想指出的是,虽然您可以构建这样的服务器,但您不应该这样做,除非您确定永远不需要将其扩展到多个服务器。感谢您指出这一点。我想如果它扩展到一个服务器集群,那么索引应该统一到其他服务器可以访问的地方,这是有道理的。
global.aGlobalVar = "foo";