skip to Main Content

In the Nodejs app, I am using ‘ioredis’ npm module to execute all redis operations. Redis is used heavily in the whole service. But I have seen for 1 of 1000 call, redis latency is increased to 400ms.

I am trying to log all redis operations exceeding a certain timestamp in the code itself. Suggest some ways to log such commands, without slowing any other operation.
Thanks.

2

Answers


  1. Chosen as BEST ANSWER

    For time being, I wasn't able to find any inbuilt solution. But I handled this by creating a wrapper before the execution of Redis operations.

    const traceTime = function (fn) {
       return async function (...args) {
          const startTime = Date.now();
          const executionResp = await fn.apply(this, args);
          const endTime = Date.now();
       };
    }
    
    /* wrap the redis operations with traceTime */
    
    set = traceTime(set); // redis set operation
    get = traceTime(get); // redis get operation
    
    
    /* use redis set operation, wherever you want to use,           
      it will log startTime and endTime and execute redis operation from there */
    set(key, value, (err, response) => { 
       // err and response handler 
    });
    

  2. You can try this :

    var Moment = require('moment');
    
    var start_time = Moment();
    
    
    //->>> In case of Promises
    
    redisOperation(arguments)
    .then(function() {
       var time_taken = Moment() - start_time;
       console.log(time_taken); //However you want to log, use the logger function here
    });
    
    
    
    //->>> In case of Callback Function
    
    redisOperation(arguments, function() {
        var time_taken = Moment() - start_time;
        console.log(time_taken); //However you want to log, use the logger function here
    
        cb();
    });
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search