节点是否处于状态?Node可以在内存中维护变量吗?

Is Node Stateful? Can Node maintain variables in memory

本文关键字:内存 维护 变量 Node 于状态 状态 节点 是否      更新时间:2023-09-26

Node是否处于状态?

如果我想建立一个索引保存在内存中,它会在不同的连接中持久化吗?我只是想知道这是否可能。例如,我们有一个java服务器,它在内存中维护一个哈希映射来加速某些搜索查询。当有东西进来时,它会对它进行修改。这在Node中可能吗?

谢谢。

当然。这是一个非常简单的例子,我认为你正在寻找(修改样例代码从http://nodejs.org):

var http = require('http');
var foo = 0;
http.createServer(function (req, res) {
  foo += 1;
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('You are foo number ' + foo + ''n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

请注意,除了最短暂的数据类型之外,这种事情通常不会发生。如果你想让稍微更持久,可以使用redis

是的,您可以在进程的生命周期中保持在内存中的状态。有一些库可用于哈希映射、LRU缓存和其他常用的数据结构。

您可以在node中拥有等同于静态变量的内容。第一次需要文件时,节点将运行该文件中的代码。这意味着,如果您在等于或高于module.exports的作用域级别上定义变量,则始终可以从内部闭包访问这些变量。

(function(){
  var aStaticVariable = 123;
  module.exports = function() {
    // an instantiable object
  }
})();

你也有全局变量:

global.aGlobalVar = "foo";