123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /// <reference types="node" />
- import { SrvRecord } from "dns";
- import { RedisOptions } from "../redis/RedisOptions";
- import { CommanderOptions } from "../utils/Commander";
- import { NodeRole } from "./util";
- export declare type DNSResolveSrvFunction = (hostname: string, callback: (err: NodeJS.ErrnoException | null | undefined, records?: SrvRecord[]) => void) => void;
- export declare type DNSLookupFunction = (hostname: string, callback: (err: NodeJS.ErrnoException | null | undefined, address: string, family?: number) => void) => void;
- export interface NatMap {
- [key: string]: {
- host: string;
- port: number;
- };
- }
- /**
- * Options for Cluster constructor
- */
- export interface ClusterOptions extends CommanderOptions {
- /**
- * See "Quick Start" section.
- *
- * @default (times) => Math.min(100 + times * 2, 2000)
- */
- clusterRetryStrategy?: (times: number, reason?: Error) => number | void | null;
- /**
- * See Redis class.
- *
- * @default true
- */
- enableOfflineQueue?: boolean;
- /**
- * When enabled, ioredis only emits "ready" event when `CLUSTER INFO`
- * command reporting the cluster is ready for handling commands.
- *
- * @default true
- */
- enableReadyCheck?: boolean;
- /**
- * Scale reads to the node with the specified role.
- *
- * @default "master"
- */
- scaleReads?: NodeRole | Function;
- /**
- * When a MOVED or ASK error is received, client will redirect the
- * command to another node.
- * This option limits the max redirections allowed to send a command.
- *
- * @default 16
- */
- maxRedirections?: number;
- /**
- * When an error is received when sending a command (e.g.
- * "Connection is closed." when the target Redis node is down), client will retry
- * if `retryDelayOnFailover` is valid delay time (in ms).
- *
- * @default 100
- */
- retryDelayOnFailover?: number;
- /**
- * When a CLUSTERDOWN error is received, client will retry
- * if `retryDelayOnClusterDown` is valid delay time (in ms).
- *
- * @default 100
- */
- retryDelayOnClusterDown?: number;
- /**
- * When a TRYAGAIN error is received, client will retry
- * if `retryDelayOnTryAgain` is valid delay time (in ms).
- *
- * @default 100
- */
- retryDelayOnTryAgain?: number;
- /**
- * By default, this value is 0, which means when a `MOVED` error is received,
- * the client will resend the command instantly to the node returned together with
- * the `MOVED` error. However, sometimes it takes time for a cluster to become
- * state stabilized after a failover, so adding a delay before resending can
- * prevent a ping pong effect.
- *
- * @default 0
- */
- retryDelayOnMoved?: number;
- /**
- * The milliseconds before a timeout occurs while refreshing
- * slots from the cluster.
- *
- * @default 1000
- */
- slotsRefreshTimeout?: number;
- /**
- * The milliseconds between every automatic slots refresh.
- *
- * @default 5000
- */
- slotsRefreshInterval?: number;
- /**
- * Passed to the constructor of `Redis`
- *
- * @default null
- */
- redisOptions?: Omit<RedisOptions, "port" | "host" | "path" | "sentinels" | "retryStrategy" | "enableOfflineQueue" | "readOnly">;
- /**
- * By default, When a new Cluster instance is created,
- * it will connect to the Redis cluster automatically.
- * If you want to keep the instance disconnected until the first command is called,
- * set this option to `true`.
- *
- * @default false
- */
- lazyConnect?: boolean;
- /**
- * Discover nodes using SRV records
- *
- * @default false
- */
- useSRVRecords?: boolean;
- /**
- * SRV records will be resolved via this function.
- *
- * You may provide a custom `resolveSrv` function when you want to customize
- * the cache behavior of the default function.
- *
- * @default require('dns').resolveSrv
- */
- resolveSrv?: DNSResolveSrvFunction;
- /**
- * Hostnames will be resolved to IP addresses via this function.
- * This is needed when the addresses of startup nodes are hostnames instead
- * of IPs.
- *
- * You may provide a custom `lookup` function when you want to customize
- * the cache behavior of the default function.
- *
- * @default require('dns').lookup
- */
- dnsLookup?: DNSLookupFunction;
- natMap?: NatMap;
- /**
- * See Redis class.
- *
- * @default false
- */
- enableAutoPipelining?: boolean;
- /**
- * See Redis class.
- *
- * @default []
- */
- autoPipeliningIgnoredCommands?: string[];
- /**
- * Custom LUA commands
- */
- scripts?: Record<string, {
- lua: string;
- numberOfKeys?: number;
- readOnly?: boolean;
- }>;
- }
- export declare const DEFAULT_CLUSTER_OPTIONS: ClusterOptions;
|