43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
var Redlock = require('redlock');
|
|
var RedisService = module.exports;
|
|
|
|
export class RedlockService {
|
|
_redisClient: any;
|
|
ttl: number;
|
|
redlock: any;
|
|
constructor(redisClient) {
|
|
this._redisClient = redisClient;
|
|
this._redisClient.on("error", function (err) {
|
|
console.error("Redis:Error:" + err);
|
|
});
|
|
this.ttl = 1000;
|
|
this.redlock = new Redlock(
|
|
[this._redisClient],
|
|
{
|
|
// the expected clock drift; for more details
|
|
// see http://redis.io/topics/distlock
|
|
driftFactor: 0.01, // time in ms
|
|
|
|
// the max number of times Redlock will attempt
|
|
// to lock a resource before erroring
|
|
retryCount: 10,
|
|
|
|
// the time in ms between attempts
|
|
retryDelay: 200, // time in ms
|
|
|
|
// the max time in ms randomly added to retries
|
|
// to improve performance under high contention
|
|
// see https://www.awsarchitectureblog.com/2015/03/backoff.html
|
|
retryJitter: 200 // time in ms
|
|
}
|
|
);
|
|
|
|
this.redlock.on('clientError', function(err) {
|
|
console.error('A redis error has occurred:', err);
|
|
});
|
|
}
|
|
|
|
getWithModify() {
|
|
|
|
}
|
|
} |