Node.js /使Redis异步调用

MIDE11

我在node.js中使用redis客户端

    var db = require("redis");
    var dbclient = db.createClient();

我以以下方式加载数据库:

 dbclient.zrange("cache", -1000000000000000, +1000000000000000, function(err, replies){
                logger.info("Go to cache");
                for (var i=0; i < replies.length; i++){
                     (function(i){
                     // Do some commands with the result
                     })(i)
               }
    })

我注意到启动我的应用程序需要30秒钟。数据库查询执行。在这段时间内,没有其他来自Express模块的请求得到处理

我该如何解决这个问题?为什么没有异步?

贝斯特·安特(Basit Anwer)

如果您担心正常运行时间,则应该使用ZSCAN

使用COUNT选项可获取有关每次通话的更多数据,但请记住:

尽管SCAN不能保证每次迭代返回的元素数量,但可以使用COUNT选项根据经验调整SCAN的行为

并在每个结果上使用setImmediate函数迭代到下一个SCAN。

var cursor = '0';

function doscan(){
    dbclient.zscan("cache", cursor, "COUNT", "100", function(err, replies){
                logger.info("Go to cache");

                // Update the cursor position for the next scan
                cursor = res[0];

                if (cursor === '0') {
                    return console.log('Iteration complete');
                } else {
                    for (var i=0; i < replies.length; i++){
                         (function(i){
                         // Do some commands with the result
                         })(i)
                    }
                    setImmediate(function() { doscan() });
                }
    })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在node.js中正确放置具有多个异步redis调用的回调

来自分类Dev

angular.js ui +引导程序提前+异步调用

来自分类Dev

Node.js并行异步调用,但具有优先级

来自分类Dev

Node.js:从内部带有异步调用的函数返回值

来自分类Dev

Node.js的异步调用和递归

来自分类Dev

在node.js中同步调用

来自分类Dev

Node.js护照本地注册上的同步调用

来自分类Dev

如何在Node.js中通过异步调用重用测试功能?

来自分类Dev

node.js上的redis是同步还是异步?

来自分类Dev

节点JS异步映射是同步或异步调用

来自分类Dev

Node.js-异步方法调用问题

来自分类Dev

回送异步数据调用Node.js

来自分类Dev

JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

来自分类Dev

使Node.js退出,无论本地模块异步调用是否挂起

来自分类Dev

如何使用Express和Node进行异步调用

来自分类Dev

Node.js:通过异步调用顺序完全执行Websocket响应

来自分类Dev

使用sequelize对MySQL的Node.js和异步调用阻止了其他用户

来自分类Dev

在node.js中正确放置具有多个异步redis调用的回调

来自分类Dev

Node.js:从内部带有异步调用的函数返回值

来自分类Dev

递归,Node js和异步调用

来自分类Dev

node.js同步调用收集结果

来自分类Dev

Node.js杀死异步调用

来自分类Dev

在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

来自分类Dev

JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

来自分类Dev

AngularJS和Node.js的异步调用

来自分类Dev

如何使用JS Promise处理异步调用?

来自分类Dev

node.js redis 异步调用

来自分类Dev

在非异步 Javascript 中使用异步调用数据,Node 到 javascript 变量复制

来自分类Dev

Node.js 使用 Promise.all 返回异步调用?

Related 相关文章

  1. 1

    在node.js中正确放置具有多个异步redis调用的回调

  2. 2

    angular.js ui +引导程序提前+异步调用

  3. 3

    Node.js并行异步调用,但具有优先级

  4. 4

    Node.js:从内部带有异步调用的函数返回值

  5. 5

    Node.js的异步调用和递归

  6. 6

    在node.js中同步调用

  7. 7

    Node.js护照本地注册上的同步调用

  8. 8

    如何在Node.js中通过异步调用重用测试功能?

  9. 9

    node.js上的redis是同步还是异步?

  10. 10

    节点JS异步映射是同步或异步调用

  11. 11

    Node.js-异步方法调用问题

  12. 12

    回送异步数据调用Node.js

  13. 13

    JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

  14. 14

    使Node.js退出,无论本地模块异步调用是否挂起

  15. 15

    如何使用Express和Node进行异步调用

  16. 16

    Node.js:通过异步调用顺序完全执行Websocket响应

  17. 17

    使用sequelize对MySQL的Node.js和异步调用阻止了其他用户

  18. 18

    在node.js中正确放置具有多个异步redis调用的回调

  19. 19

    Node.js:从内部带有异步调用的函数返回值

  20. 20

    递归,Node js和异步调用

  21. 21

    node.js同步调用收集结果

  22. 22

    Node.js杀死异步调用

  23. 23

    在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

  24. 24

    JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

  25. 25

    AngularJS和Node.js的异步调用

  26. 26

    如何使用JS Promise处理异步调用?

  27. 27

    node.js redis 异步调用

  28. 28

    在非异步 Javascript 中使用异步调用数据,Node 到 javascript 变量复制

  29. 29

    Node.js 使用 Promise.all 返回异步调用?

热门标签

归档