mirror of
https://github.com/nestjs/nest.git
synced 2026-02-21 23:11:44 +00:00
216 lines
6.2 KiB
TypeScript
216 lines
6.2 KiB
TypeScript
import { ConnectionOptions } from 'tls';
|
|
|
|
/**
|
|
* @see https://github.dev/luin/ioredis/blob/df04dd8d87a44d3b64b385c86581915248554508/lib/redis/RedisOptions.ts#L184
|
|
*
|
|
* @publicApi
|
|
*/
|
|
export interface IORedisOptions {
|
|
Connector?: any;
|
|
retryStrategy?: (times: number) => number | void | null;
|
|
|
|
/**
|
|
* If a command does not return a reply within a set number of milliseconds,
|
|
* a "Command timed out" error will be thrown.
|
|
*/
|
|
commandTimeout?: number;
|
|
/**
|
|
* Enable/disable keep-alive functionality.
|
|
* @link https://nodejs.org/api/net.html#socketsetkeepaliveenable-initialdelay
|
|
* @default 0
|
|
*/
|
|
keepAlive?: number;
|
|
|
|
/**
|
|
* Enable/disable the use of Nagle's algorithm.
|
|
* @link https://nodejs.org/api/net.html#socketsetnodelaynodelay
|
|
* @default true
|
|
*/
|
|
noDelay?: boolean;
|
|
|
|
/**
|
|
* Set the name of the connection to make it easier to identity the connection
|
|
* in client list.
|
|
* @link https://redis.io/commands/client-setname
|
|
*/
|
|
connectionName?: string;
|
|
|
|
/**
|
|
* If set, client will send AUTH command with the value of this option as the first argument when connected.
|
|
* This is supported since Redis 6.
|
|
*/
|
|
username?: string;
|
|
|
|
/**
|
|
* If set, client will send AUTH command with the value of this option when connected.
|
|
*/
|
|
password?: string;
|
|
|
|
/**
|
|
* Database index to use.
|
|
*
|
|
* @default 0
|
|
*/
|
|
db?: number;
|
|
|
|
/**
|
|
* When the client reconnects, channels subscribed in the previous connection will be
|
|
* resubscribed automatically if `autoResubscribe` is `true`.
|
|
* @default true
|
|
*/
|
|
autoResubscribe?: boolean;
|
|
|
|
/**
|
|
* Whether or not to resend unfulfilled commands on reconnect.
|
|
* Unfulfilled commands are most likely to be blocking commands such as `brpop` or `blpop`.
|
|
* @default true
|
|
*/
|
|
autoResendUnfulfilledCommands?: boolean;
|
|
/**
|
|
* Whether or not to reconnect on certain Redis errors.
|
|
* This options by default is `null`, which means it should never reconnect on Redis errors.
|
|
* You can pass a function that accepts an Redis error, and returns:
|
|
* - `true` or `1` to trigger a reconnection.
|
|
* - `false` or `0` to not reconnect.
|
|
* - `2` to reconnect and resend the failed command (who triggered the error) after reconnection.
|
|
* @example
|
|
* ```js
|
|
* const redis = new Redis({
|
|
* reconnectOnError(err) {
|
|
* const targetError = "READONLY";
|
|
* if (err.message.includes(targetError)) {
|
|
* // Only reconnect when the error contains "READONLY"
|
|
* return true; // or `return 1;`
|
|
* }
|
|
* },
|
|
* });
|
|
* ```
|
|
* @default null
|
|
*/
|
|
reconnectOnError?: ((err: Error) => boolean | 1 | 2) | null;
|
|
|
|
/**
|
|
* @default false
|
|
*/
|
|
readOnly?: boolean;
|
|
/**
|
|
* When enabled, numbers returned by Redis will be converted to JavaScript strings instead of numbers.
|
|
* This is necessary if you want to handle big numbers (above `Number.MAX_SAFE_INTEGER` === 2^53).
|
|
* @default false
|
|
*/
|
|
stringNumbers?: boolean;
|
|
|
|
/**
|
|
* How long the client will wait before killing a socket due to inactivity during initial connection.
|
|
* @default 10000
|
|
*/
|
|
connectTimeout?: number;
|
|
|
|
/**
|
|
* This option is used internally when you call `redis.monitor()` to tell Redis
|
|
* to enter the monitor mode when the connection is established.
|
|
*
|
|
* @default false
|
|
*/
|
|
monitor?: boolean;
|
|
|
|
/**
|
|
* The commands that don't get a reply due to the connection to the server is lost are
|
|
* put into a queue and will be resent on reconnect (if allowed by the `retryStrategy` option).
|
|
* This option is used to configure how many reconnection attempts should be allowed before
|
|
* the queue is flushed with a `MaxRetriesPerRequestError` error.
|
|
* Set this options to `null` instead of a number to let commands wait forever
|
|
* until the connection is alive again.
|
|
*
|
|
* @default 20
|
|
*/
|
|
maxRetriesPerRequest?: number | null;
|
|
|
|
/**
|
|
* @default 10000
|
|
*/
|
|
maxLoadingRetryTime?: number;
|
|
/**
|
|
* @default false
|
|
*/
|
|
enableAutoPipelining?: boolean;
|
|
/**
|
|
* @default []
|
|
*/
|
|
autoPipeliningIgnoredCommands?: string[];
|
|
offlineQueue?: boolean;
|
|
commandQueue?: boolean;
|
|
|
|
/**
|
|
*
|
|
* By default, if the connection to Redis server has not been established, commands are added to a queue
|
|
* and are executed once the connection is "ready" (when `enableReadyCheck` is true, "ready" means
|
|
* the Redis server has loaded the database from disk, otherwise means the connection to the Redis
|
|
* server has been established). If this option is false, when execute the command when the connection
|
|
* isn't ready, an error will be returned.
|
|
*
|
|
* @default true
|
|
*/
|
|
enableOfflineQueue?: boolean;
|
|
|
|
/**
|
|
* The client will sent an INFO command to check whether the server is still loading data from the disk (
|
|
* which happens when the server is just launched) when the connection is established, and only wait until
|
|
* the loading process is finished before emitting the `ready` event.
|
|
*
|
|
* @default true
|
|
*/
|
|
enableReadyCheck?: boolean;
|
|
|
|
/**
|
|
* When a Redis instance is initialized, a connection to the server is immediately established. Set this to
|
|
* true will delay the connection to the server until the first command is sent or `redis.connect()` is called
|
|
* explicitly.
|
|
*
|
|
* @default false
|
|
*/
|
|
|
|
lazyConnect?: boolean;
|
|
|
|
/**
|
|
* @default undefined
|
|
*/
|
|
scripts?: Record<
|
|
string,
|
|
{ lua: string; numberOfKeys?: number; readOnly?: boolean }
|
|
>;
|
|
|
|
keyPrefix?: string;
|
|
showFriendlyErrorStack?: boolean;
|
|
|
|
// StandaloneConnectionOptions
|
|
disconnectTimeout?: number;
|
|
tls?: ConnectionOptions;
|
|
|
|
// SentinelConnectionOptions
|
|
/**
|
|
* Master group name of the Sentinel
|
|
*/
|
|
name?: string;
|
|
/**
|
|
* @default "master"
|
|
*/
|
|
role?: 'master' | 'slave';
|
|
sentinelUsername?: string;
|
|
sentinelPassword?: string;
|
|
sentinels?: Array<Partial<any>>;
|
|
sentinelRetryStrategy?: (retryAttempts: number) => number | void | null;
|
|
sentinelReconnectStrategy?: (retryAttempts: number) => number | void | null;
|
|
preferredSlaves?: any;
|
|
sentinelCommandTimeout?: number;
|
|
enableTLSForSentinelMode?: boolean;
|
|
sentinelTLS?: ConnectionOptions;
|
|
natMap?: any;
|
|
updateSentinels?: boolean;
|
|
/**
|
|
* @default 10
|
|
*/
|
|
sentinelMaxConnections?: number;
|
|
failoverDetector?: boolean;
|
|
}
|