Browse Source

updating examples/redis_example/example.js with cache.keys() usage

feature/nested-cache-fetch-fix
Bryan Donovan 11 years ago
parent
commit
632d189c7c
  1. 50
      examples/redis_example/example.js
  2. 20
      examples/redis_example/redis_store.js

50
examples/redis_example/example.js

@ -3,45 +3,67 @@
// npm install sol-redis-pool // npm install sol-redis-pool
// node examples/redis_example/example.js // node examples/redis_example/example.js
var util = require('util');
var cache_manager = require('../../'); var cache_manager = require('../../');
var redis_store = require('./redis_store'); var redis_store = require('./redis_store');
var redis_cache = cache_manager.caching({store: redis_store, db: 0, ttl: 100/*seconds*/}); var redis_cache = cache_manager.caching({store: redis_store, db: 0, ttl: 100/*seconds*/});
console.log("set/get/del example:");
redis_cache.set('foo', 'bar', function (err) { redis_cache.set('foo', 'bar', function (err) {
if (err) { throw err; } if (err) { throw err; }
redis_cache.get('foo', function (err, result) { redis_cache.get('foo', function (err, result) {
console.log(result); if (err) { throw err; }
console.log("result fetched from cache: " + result);
// >> 'bar' // >> 'bar'
redis_cache.del('foo', function (err) { console.log(err); }); redis_cache.del('foo', function (err) {
if (err) { throw err; }
});
}); });
}); });
var user_id = 123;
function create_key(id) {
return 'user_' + id;
}
function get_user(id, cb) { function get_user(id, cb) {
setTimeout(function () { setTimeout(function () {
console.log("Returning user from slow database."); console.log("\n\nReturning user from slow database.");
cb(null, {id: id, name: 'Bob'}); cb(null, {id: id, name: 'Bob'});
}, 100); }, 100);
} }
var user_id = 123; function get_user_from_cache(id, cb) {
var key = 'user_' + user_id; var key = create_key(id);
redis_cache.wrap(key, function (cache_cb) {
get_user(user_id, cache_cb);
}, cb);
}
redis_cache.wrap(key, function (cb) { get_user_from_cache(user_id, function (err, user) {
get_user(user_id, cb);
}, function (err, user) {
console.log(user); console.log(user);
// Second time fetches user from redis_cache // Second time fetches user from redis_cache
redis_cache.wrap(key, function (cb) { get_user_from_cache(user_id, function (err, user) {
get_user(user_id, cb); console.log("user from second cache request:");
}, function (err, user) {
console.log(user); console.log(user);
process.exit();
redis_cache.keys(function (err, keys) {
console.log("keys: " + util.inspect(keys));
var key = create_key(user_id);
redis_cache.del(key, function (err) {
if (err) { throw err; }
process.exit();
});
});
}); });
}); });
// Outputs: // Outputs:
// Returning user from slow database.
// { id: 123, name: 'Bob' } // { id: 123, name: 'Bob' }
// user from second cache request:
// { id: 123, name: 'Bob' } // { id: 123, name: 'Bob' }
// keys: [ 'user_123' ]

20
examples/redis_example/redis_store.js

@ -75,13 +75,27 @@ function redis_store(args) {
}); });
}; };
self.keys = function (pattern, cb) {
if (typeof pattern === 'function') {
cb = pattern;
pattern = '*';
}
connect(function (err, conn) {
if (err) { return cb(err); }
conn.keys(pattern, function (err, result) {
pool.release(conn);
cb(err, result);
});
});
};
return self; return self;
} }
var methods = { module.exports = {
create: function (args) { create: function (args) {
return redis_store(args); return redis_store(args);
} }
}; };
module.exports = methods;

Loading…
Cancel
Save