Redis非常快.对于我的机器上的大多数部分,它与node.js中的本机Javascript语句或函数调用一样快.在node.js中编写常规Javascript代码很容易/轻松,因为不需要回调.我不明白为什么使用node.js在Redis中获取/设置键/值数据并不容易.
假设node.js和Redis在同一台机器上,是否有任何npm库允许使用阻塞调用与node.js上的Redis进行交互?我知道这必须是与V8连接的C/C++库.
Dra*_*nov 11
我想您要确保已执行所有redis插入操作.为此,您可以使用MULTI命令插入密钥或执行其他操作.所述https://github.com/mranney/node_redis模块排队在多对象推的命令,并且相应地执行它们.
这样,你只需要一个回调,在exec调用结束时.
小智 10
对于试图习惯Node的规划编程模型的开发人员来说,这似乎是一个常见的熊陷阱.
会发生什么:你遇到了异步/回调模式不太合适的情况,你想到你需要的是阻塞代码的一些方法,你要求Google/StackExchange关于Node中的阻塞,以及你得到的所有东西是关于阻塞有多糟糕的警告.
他们是正确的 - 阻止,("在做其他任何事情之前等待结果"),这不是你应该尝试在Node中做的事情.但我认为更有帮助的是要意识到99.9%的时间,你并不是真正想找到一种方法来阻止,你只是想找到一种方法来制作你的应用,"等待这个结果在继续这样做之前,"这不是完全相同的事情.
尝试在Node中查看"流控制"的概念,而不是"阻塞"某些设计模式,这些模式可能更适合您尝试的操作.这是一个要检查的库列表:
https://github.com/joyent/node/wiki/modules#wiki-async-flow
我也是Node的新手,但我真的在挖Async:https://github.com/caolan/async
阻止代码会产生巨大的瓶颈.
如果您使用阻止代码,您的服务器将变得难以置信.
请记住,节点是单线程的.所以任何阻塞代码都会阻塞每个连接客户端的节点.
您自己的基准测试显示它对一个客户来说足够快.你有1000个客户对它进行基准测试吗?如果您尝试这样做,您将看到为什么阻止代码是坏的