/// import { EventEmitter } from "events"; import { RedisOptions, NodeKey, NodeRole } from "./util"; import { ClusterOptions, ClusterNodeRetryStrategy } from "./ClusterOptions"; import Redis from "../Redis"; export interface ConnectionPoolHooks { onCreate?: (redis: Redis, readOnly: boolean) => void; onRoleChange?: (redis: Redis, key: NodeKey, readOnly: boolean) => void; onRemove?: (redis: Redis) => void; } export default class ConnectionPool extends EventEmitter { private redisOptions; private clusterNodeRetryStrategy; private hooks; private nodes; private specifiedOptions; constructor(redisOptions: NonNullable, clusterNodeRetryStrategy?: ClusterNodeRetryStrategy, hooks?: ConnectionPoolHooks); getNodes(role?: NodeRole): Redis[]; getInstanceByKey(key: NodeKey): Redis; getSampleInstance(role: NodeRole): Redis; /** * Add a master node to the pool * @param node */ addMasterNode(node: RedisOptions): boolean; /** * Creates a Redis connection instance from the node options * @param node * @param readOnly */ createRedisFromOptions(node: RedisOptions, readOnly: boolean): Redis; /** * Find or create a connection to the node */ findOrCreate(node: RedisOptions, readOnly?: boolean): Redis; /** * Replace the connection to the node with a fresh one. Used when the * existing connection is known to be stale, e.g. after a MOVED redirect * that points back at the node it came from. */ recreate(node: RedisOptions, readOnly?: boolean): Redis; /** * Reset the pool with a set of nodes. * The old node will be removed. */ reset(nodes: RedisOptions[]): void; /** * Remove a node from the pool. */ private removeNode; }