节点是否有状态? 节点可以维护内存中的variables

节点是有状态的吗?

如果我想build立一个索引来保存在内存中,它会坚持不同的连接? 我只是想知道这是否可能。 例如,我们有一个java中的服务器,在内存中维护一个hashmap来加速某些search查询。 它会修改它,因为事情进来。在节点这可能吗?

谢谢。

是的,你可以保持在你的过程中的状态,在整个过程中一直存在于记忆中。 有可用于hashmaps,LRUcaching和其他常用数据结构的库。

绝对。 下面是我认为你正在寻找的一个简单的例子(来自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这样的东西

您可以在节点中具有相同的静态variables。 第一次需要文件节点将运行该文件中的代码。 这意味着如果你在一个作用域级别上定义了variables或者高于module.exports ,那么你总是可以访问内部闭包的这些variables。

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

你也有全局variables:

 global.aGlobalVar = "foo";