kopia lustrzana https://github.com/c9/core
64 wiersze
1.5 KiB
JavaScript
64 wiersze
1.5 KiB
JavaScript
|
|
|
|
// master
|
|
// slave
|
|
|
|
var debug = require('debug')('connect:redis-multi-region');
|
|
|
|
module.exports = function(connect) {
|
|
|
|
var Store = connect.session.Store;
|
|
var RedisStore = require("connect-redis")(connect);
|
|
|
|
function RedisMultiRegionStore(options) {
|
|
options.master.prefix = options.prefix;
|
|
options.slave.prefix = options.prefix;
|
|
|
|
this.master = new RedisStore(options.master);
|
|
this.slave = new RedisStore(options.slave);
|
|
}
|
|
|
|
|
|
RedisMultiRegionStore.prototype.__proto__ = Store.prototype;
|
|
|
|
/**
|
|
* Attempt to fetch session by the given `sid`.
|
|
*
|
|
* @param {String} sid
|
|
* @param {Function} fn
|
|
* @api public
|
|
*/
|
|
RedisMultiRegionStore.prototype.get = function(sid, fn) {
|
|
debug('GET "%s"', sid);
|
|
this.slave.get(sid, fn);
|
|
};
|
|
|
|
/**
|
|
* Commit the given `sess` object associated with the given `sid`.
|
|
*
|
|
* @param {String} sid
|
|
* @param {Session} sess
|
|
* @param {Function} fn
|
|
* @api public
|
|
*/
|
|
RedisMultiRegionStore.prototype.set = function(sid, sess, fn) {
|
|
debug("SET %s %j", sid, sess);
|
|
this.master.set(sid, sess);
|
|
this.slave.set(sid, sess, fn);
|
|
};
|
|
|
|
/**
|
|
* Destroy the session associated with the given `sid`.
|
|
*
|
|
* @param {String} sid
|
|
* @api public
|
|
*/
|
|
RedisMultiRegionStore.prototype.destroy = function(sid, fn) {
|
|
debug("DESTROY %s", sid);
|
|
this.master.destroy(sid);
|
|
this.slave.destroy(sid, fn);
|
|
};
|
|
|
|
return RedisMultiRegionStore;
|
|
};
|