是否有node.js的阻塞redis库?

raf*_*ude 0 redis node.js npm

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调用结束时.

  • 并使用`Q`来避免长回调意大利面.https://github.com/kriskowal/q (2认同)

小智 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


Ray*_*nos 6

阻止代码会产生巨大的瓶颈.

如果您使用阻止代码,您的服务器将变得难以置信.

请记住,节点是单线程的.所以任何阻塞代码都会阻塞每个连接客户端的节点.

您自己的基准测试显示它对一个客户来说足够快.你有1000个客户对它进行基准测试吗?如果您尝试这样做,您将看到为什么阻止代码是坏的

  • @ pm8他们对一个客户来说很快.但是,如果你同时为1000做呢?巨大的瓶颈. (5认同)