ts-safe-redis-leader
Version:
Redis leader election implementation that does not have any race conditions in Typescript
34 lines (33 loc) • 1.02 kB
TypeScript
import IORedis from "ioredis";
import { MainEmitter } from "./emitter";
export declare enum EmitterEnum {
NOT_ELECTED = "notElected",
ELECTED = "elected",
DEMOTED = "demoted",
ERROR = "error",
RENEW = "renew"
}
export declare class SafeRedisLeader {
isStarted: boolean;
wasLeading: boolean;
canLead: boolean;
emitter: MainEmitter;
id: string;
renewTimeoutId: ReturnType<typeof setTimeout>;
electTimeoutId: ReturnType<typeof setTimeout>;
asyncRedis: IORedis.Redis;
ttl: number;
wait: number;
key: IORedis.KeyType;
constructor(asyncRedis: IORedis.Redis, ttl: number, wait: number, key: IORedis.KeyType);
renew(): Promise<void>;
runElection(): Promise<void>;
elect(): Promise<void>;
isLeader(): Promise<boolean>;
stop(): Promise<void>;
on(name: string, fn: () => void): void;
off(name: string, fn: () => void): void;
once(name: string, fn: () => void): void;
removeAllListeners(): void;
shutdown(): Promise<void>;
}