diff --git a/lib/ExpressRedisCache/add.js b/lib/ExpressRedisCache/add.js index 4f5b225..5ac64a3 100644 --- a/lib/ExpressRedisCache/add.js +++ b/lib/ExpressRedisCache/add.js @@ -50,29 +50,29 @@ module.exports = (function () { }; var size = require('../sizeof')(entry); + var calculated_size = (size / 1024).toFixed(2); var prefix = self.prefix.match(/:$/) ? self.prefix.replace(/:$/, '') : self.prefix; /* Save as a Redis hash */ var redisKey = prefix + ':' + name; - self.client.hmset(redisKey, entry, - domain.intercept(function (res) { - var calculated_size = (size / 1024).toFixed(2); - /** If @expire then tell Redis to expire **/ - if ( typeof entry.expire === 'number' && entry.expire > 0 ) { - self.client.expire(redisKey, +entry.expire, - domain.intercept(function () { - self.emit('message', require('util').format('SET %s ~%d Kb %d TTL (sec)', redisKey, calculated_size, +entry.expire)); - callback(null, name, entry, res); - })); - } - else - { + if ( typeof entry.expire === 'number' && entry.expire > 0 ) { + /** If @expire then tell Redis to expire **/ + self.client.multi() + .hmset(redisKey, entry) + .expire(redisKey, +entry.expire) + .exec(domain.intercept(function (res) { + self.emit('message', require('util').format('SET %s ~%d Kb %d TTL (sec)', redisKey, calculated_size, +entry.expire)); + callback(null, name, entry, res); + })); + } else { + self.client.hmset(redisKey, entry, + domain.intercept(function (res) { self.emit('message', require('util').format('SET %s ~%d Kb', redisKey, calculated_size)); callback(null, name, entry, res); - } - })); + })); + } }); }