hfxbus
Version:
Redis backed high frequency exchange bus
44 lines (43 loc) • 1.63 kB
TypeScript
import Redis, { Cluster, ClusterNode, ClusterOptions, RedisOptions } from 'ioredis';
export interface IRedisClientOptions {
keyPrefix?: string;
enablePipelining?: boolean;
sequence?: number;
staticRoutes?: Array<string | number>;
}
export interface IRedisClient extends IRedisClientOptions {
usedBy?: number;
stopped?: boolean;
boundProducers?: Set<string>;
}
export interface IRedisNodes extends IRedisClientOptions {
nodes: Array<RedisOptions & IRedisClientOptions>;
}
export declare type RedisClient = Cluster & IRedisClient | Redis.Redis & IRedisClient;
export declare class ConnectionManager {
static cluster(startupNodes: Array<ClusterNode>, cluster: ClusterOptions & IRedisClientOptions): ConnectionManager;
static standalone(standalone: RedisOptions & IRedisClientOptions): ConnectionManager;
static nodes(nodes: IRedisNodes): ConnectionManager;
private nodes;
private standalone;
private cluster;
private startupNodes;
private clients;
private keyPrefix;
private staticRoutes;
constructor({ standalone, cluster, startupNodes, nodes, }: {
standalone?: RedisOptions & IRedisClientOptions;
cluster?: ClusterOptions & IRedisClientOptions;
startupNodes?: Array<ClusterNode>;
nodes?: IRedisNodes;
});
getClientByRoute(key: string, route: string): RedisClient;
getClients(key: string): Array<RedisClient>;
getClient(key: string): RedisClient;
getKeyPrefix(): string;
stop({ maxWait, force, }?: {
maxWait?: number;
force?: boolean;
}): Promise<void>;
private addClient;
}