diff --git a/examples/redis_example/example.js b/examples/redis_example/example.js index ee769c5..7de00bf 100644 --- a/examples/redis_example/example.js +++ b/examples/redis_example/example.js @@ -10,7 +10,8 @@ var redis_cache = cache_manager.caching({store: redis_store, db: 0, ttl: 100}); var ttl = 60; console.log("set/get/del example:"); -redis_cache.set('foo', 'bar', ttl, function(err) { + +redis_cache.set('foo', 'bar', {ttl: ttl}, function(err) { if (err) { throw err; } redis_cache.get('foo', function(err, result) { @@ -23,6 +24,34 @@ redis_cache.set('foo', 'bar', ttl, function(err) { }); }); +// TTL defaults to what we passed into the caching function (100) +redis_cache.set('foo-no-ttl', 'bar-no-ttl', function(err) { + if (err) { throw err; } + + redis_cache.get('foo-no-ttl', function(err, result) { + if (err) { throw err; } + console.log("result fetched from cache: " + result); + // >> 'bar' + redis_cache.del('foo-no-ttl', function(err) { + if (err) { throw err; } + }); + }); +}); + +// Calls Redis 'set' instead of 'setex' +redis_cache.set('foo-zero-ttl', 'bar-zero-ttl', {ttl: 0}, function(err) { + if (err) { throw err; } + + redis_cache.get('foo-zero-ttl', function(err, result) { + if (err) { throw err; } + console.log("result fetched from cache: " + result); + // >> 'bar' + redis_cache.del('foo-zero-ttl', function(err) { + if (err) { throw err; } + }); + }); +}); + var user_id = 123; function create_key(id) { @@ -40,7 +69,7 @@ function get_user_from_cache(id, cb) { var key = create_key(id); redis_cache.wrap(key, function(cache_cb) { get_user(user_id, cache_cb); - }, ttl, cb); + }, {ttl: ttl}, cb); } get_user_from_cache(user_id, function(err, user) { diff --git a/examples/redis_example/redis_store.js b/examples/redis_example/redis_store.js index 30c5822..e4b0bd6 100644 --- a/examples/redis_example/redis_store.js +++ b/examples/redis_example/redis_store.js @@ -34,7 +34,11 @@ function redis_store(args) { }); } - self.get = function(key, cb) { + self.get = function(key, options, cb) { + if (typeof options === 'function') { + cb = options; + } + connect(function(err, conn) { if (err) { return cb(err); } @@ -46,13 +50,20 @@ function redis_store(args) { }); }; - self.set = function(key, value, ttl, cb) { - var ttlToUse = ttl || ttlDefault; + self.set = function(key, value, options, cb) { + if (typeof options === 'function') { + cb = options; + options = {}; + } + options = options || {}; + + var ttl = (options.ttl || options.ttl === 0) ? options.ttl : ttlDefault; + connect(function(err, conn) { if (err) { return cb(err); } - if (ttlToUse) { - conn.setex(key, ttlToUse, JSON.stringify(value), function(err, result) { + if (ttl) { + conn.setex(key, ttl, JSON.stringify(value), function(err, result) { pool.release(conn); cb(err, result); });