123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /// <reference types="node" />
- import { EventEmitter } from "events";
- import Command from "../Command";
- import Redis from "../Redis";
- import ScanStream from "../ScanStream";
- import { Transaction } from "../transaction";
- import { Callback, ScanStreamOptions, WriteableStream } from "../types";
- import Commander from "../utils/Commander";
- import { ClusterOptions } from "./ClusterOptions";
- import { NodeKey, NodeRole } from "./util";
- export declare type ClusterNode = string | number | {
- host?: string | undefined;
- port?: number | undefined;
- };
- declare type ClusterStatus = "end" | "close" | "wait" | "connecting" | "connect" | "ready" | "reconnecting" | "disconnecting";
- /**
- * Client for the official Redis Cluster
- */
- declare class Cluster extends Commander {
- options: ClusterOptions;
- slots: NodeKey[][];
- status: ClusterStatus;
- /**
- * @ignore
- */
- _groupsIds: {
- [key: string]: number;
- };
- /**
- * @ignore
- */
- _groupsBySlot: number[];
- /**
- * @ignore
- */
- isCluster: boolean;
- private startupNodes;
- private connectionPool;
- private manuallyClosing;
- private retryAttempts;
- private delayQueue;
- private offlineQueue;
- private subscriber;
- private slotsTimer;
- private reconnectTimeout;
- private isRefreshing;
- private _autoPipelines;
- private _runningAutoPipelines;
- private _readyDelayedCallbacks;
- /**
- * Every time Cluster#connect() is called, this value will be
- * auto-incrementing. The purpose of this value is used for
- * discarding previous connect attampts when creating a new
- * connection.
- */
- private connectionEpoch;
- /**
- * Creates an instance of Cluster.
- */
- constructor(startupNodes: ClusterNode[], options?: ClusterOptions);
- /**
- * Connect to a cluster
- */
- connect(): Promise<void>;
- /**
- * Disconnect from every node in the cluster.
- */
- disconnect(reconnect?: boolean): void;
- /**
- * Quit the cluster gracefully.
- */
- quit(callback?: Callback<"OK">): Promise<"OK">;
- /**
- * Create a new instance with the same startup nodes and options as the current one.
- *
- * @example
- * ```js
- * var cluster = new Redis.Cluster([{ host: "127.0.0.1", port: "30001" }]);
- * var anotherCluster = cluster.duplicate();
- * ```
- */
- duplicate(overrideStartupNodes?: any[], overrideOptions?: {}): Cluster;
- /**
- * Get nodes with the specified role
- */
- nodes(role?: NodeRole): Redis[];
- /**
- * This is needed in order not to install a listener for each auto pipeline
- *
- * @ignore
- */
- delayUntilReady(callback: Callback): void;
- /**
- * Get the number of commands queued in automatic pipelines.
- *
- * This is not available (and returns 0) until the cluster is connected and slots information have been received.
- */
- get autoPipelineQueueSize(): number;
- /**
- * Refresh the slot cache
- *
- * @ignore
- */
- refreshSlotsCache(callback?: Callback<void>): void;
- /**
- * @ignore
- */
- sendCommand(command: Command, stream?: WriteableStream, node?: any): unknown;
- sscanStream(key: string, options?: ScanStreamOptions): ScanStream;
- sscanBufferStream(key: string, options?: ScanStreamOptions): ScanStream;
- hscanStream(key: string, options?: ScanStreamOptions): ScanStream;
- hscanBufferStream(key: string, options?: ScanStreamOptions): ScanStream;
- zscanStream(key: string, options?: ScanStreamOptions): ScanStream;
- zscanBufferStream(key: string, options?: ScanStreamOptions): ScanStream;
- /**
- * @ignore
- */
- handleError(error: Error, ttl: {
- value?: any;
- }, handlers: any): void;
- private resetOfflineQueue;
- private clearNodesRefreshInterval;
- private resetNodesRefreshInterval;
- /**
- * Change cluster instance's status
- */
- private setStatus;
- /**
- * Called when closed to check whether a reconnection should be made
- */
- private handleCloseEvent;
- /**
- * Flush offline queue with error.
- */
- private flushQueue;
- private executeOfflineCommands;
- private natMapper;
- private getInfoFromNode;
- private invokeReadyDelayedCallbacks;
- /**
- * Check whether Cluster is able to process commands
- */
- private readyCheck;
- private resolveSrv;
- private dnsLookup;
- /**
- * Normalize startup nodes, and resolving hostnames to IPs.
- *
- * This process happens every time when #connect() is called since
- * #startupNodes and DNS records may chanage.
- */
- private resolveStartupNodeHostnames;
- private createScanStream;
- }
- interface Cluster extends EventEmitter {
- }
- interface Cluster extends Transaction {
- }
- export default Cluster;
|