RedisOptions.d.ts 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import { CommanderOptions } from "../utils/Commander";
  2. import ConnectorConstructor from "../connectors/ConnectorConstructor";
  3. import { SentinelConnectionOptions } from "../connectors/SentinelConnector";
  4. import { StandaloneConnectionOptions } from "../connectors/StandaloneConnector";
  5. export declare type ReconnectOnError = (err: Error) => boolean | 1 | 2;
  6. export interface CommonRedisOptions extends CommanderOptions {
  7. Connector?: ConnectorConstructor;
  8. retryStrategy?: (times: number) => number | void | null;
  9. /**
  10. * If a command does not return a reply within a set number of milliseconds,
  11. * a "Command timed out" error will be thrown.
  12. */
  13. commandTimeout?: number;
  14. /**
  15. * If the socket does not receive data within a set number of milliseconds:
  16. * 1. the socket is considered "dead" and will be destroyed
  17. * 2. the client will reject any running commands (altought they might have been processed by the server)
  18. * 3. the reconnect strategy will kick in (depending on the configuration)
  19. */
  20. socketTimeout?: number;
  21. /**
  22. * Enable/disable keep-alive functionality.
  23. * @link https://nodejs.org/api/net.html#socketsetkeepaliveenable-initialdelay
  24. * @default 0
  25. */
  26. keepAlive?: number;
  27. /**
  28. * Enable/disable the use of Nagle's algorithm.
  29. * @link https://nodejs.org/api/net.html#socketsetnodelaynodelay
  30. * @default true
  31. */
  32. noDelay?: boolean;
  33. /**
  34. * Set the name of the connection to make it easier to identity the connection
  35. * in client list.
  36. * @link https://redis.io/commands/client-setname
  37. */
  38. connectionName?: string;
  39. /**
  40. * If set, client will send AUTH command with the value of this option as the first argument when connected.
  41. * This is supported since Redis 6.
  42. */
  43. username?: string;
  44. /**
  45. * If set, client will send AUTH command with the value of this option when connected.
  46. */
  47. password?: string;
  48. /**
  49. * Database index to use.
  50. *
  51. * @default 0
  52. */
  53. db?: number;
  54. /**
  55. * When the client reconnects, channels subscribed in the previous connection will be
  56. * resubscribed automatically if `autoResubscribe` is `true`.
  57. * @default true
  58. */
  59. autoResubscribe?: boolean;
  60. /**
  61. * Whether or not to resend unfulfilled commands on reconnect.
  62. * Unfulfilled commands are most likely to be blocking commands such as `brpop` or `blpop`.
  63. * @default true
  64. */
  65. autoResendUnfulfilledCommands?: boolean;
  66. /**
  67. * Whether or not to reconnect on certain Redis errors.
  68. * This options by default is `null`, which means it should never reconnect on Redis errors.
  69. * You can pass a function that accepts an Redis error, and returns:
  70. * - `true` or `1` to trigger a reconnection.
  71. * - `false` or `0` to not reconnect.
  72. * - `2` to reconnect and resend the failed command (who triggered the error) after reconnection.
  73. * @example
  74. * ```js
  75. * const redis = new Redis({
  76. * reconnectOnError(err) {
  77. * const targetError = "READONLY";
  78. * if (err.message.includes(targetError)) {
  79. * // Only reconnect when the error contains "READONLY"
  80. * return true; // or `return 1;`
  81. * }
  82. * },
  83. * });
  84. * ```
  85. * @default null
  86. */
  87. reconnectOnError?: ReconnectOnError | null;
  88. /**
  89. * @default false
  90. */
  91. readOnly?: boolean;
  92. /**
  93. * When enabled, numbers returned by Redis will be converted to JavaScript strings instead of numbers.
  94. * This is necessary if you want to handle big numbers (above `Number.MAX_SAFE_INTEGER` === 2^53).
  95. * @default false
  96. */
  97. stringNumbers?: boolean;
  98. /**
  99. * How long the client will wait before killing a socket due to inactivity during initial connection.
  100. * @default 10000
  101. */
  102. connectTimeout?: number;
  103. /**
  104. * This option is used internally when you call `redis.monitor()` to tell Redis
  105. * to enter the monitor mode when the connection is established.
  106. *
  107. * @default false
  108. */
  109. monitor?: boolean;
  110. /**
  111. * The commands that don't get a reply due to the connection to the server is lost are
  112. * put into a queue and will be resent on reconnect (if allowed by the `retryStrategy` option).
  113. * This option is used to configure how many reconnection attempts should be allowed before
  114. * the queue is flushed with a `MaxRetriesPerRequestError` error.
  115. * Set this options to `null` instead of a number to let commands wait forever
  116. * until the connection is alive again.
  117. *
  118. * @default 20
  119. */
  120. maxRetriesPerRequest?: number | null;
  121. /**
  122. * @default 10000
  123. */
  124. maxLoadingRetryTime?: number;
  125. /**
  126. * @default false
  127. */
  128. enableAutoPipelining?: boolean;
  129. /**
  130. * @default []
  131. */
  132. autoPipeliningIgnoredCommands?: string[];
  133. offlineQueue?: boolean;
  134. commandQueue?: boolean;
  135. /**
  136. *
  137. * By default, if the connection to Redis server has not been established, commands are added to a queue
  138. * and are executed once the connection is "ready" (when `enableReadyCheck` is true, "ready" means
  139. * the Redis server has loaded the database from disk, otherwise means the connection to the Redis
  140. * server has been established). If this option is false, when execute the command when the connection
  141. * isn't ready, an error will be returned.
  142. *
  143. * @default true
  144. */
  145. enableOfflineQueue?: boolean;
  146. /**
  147. * The client will sent an INFO command to check whether the server is still loading data from the disk (
  148. * which happens when the server is just launched) when the connection is established, and only wait until
  149. * the loading process is finished before emitting the `ready` event.
  150. *
  151. * @default true
  152. */
  153. enableReadyCheck?: boolean;
  154. /**
  155. * When a Redis instance is initialized, a connection to the server is immediately established. Set this to
  156. * true will delay the connection to the server until the first command is sent or `redis.connect()` is called
  157. * explicitly.
  158. *
  159. * @default false
  160. */
  161. lazyConnect?: boolean;
  162. /**
  163. * @default undefined
  164. */
  165. scripts?: Record<string, {
  166. lua: string;
  167. numberOfKeys?: number;
  168. readOnly?: boolean;
  169. }>;
  170. }
  171. export declare type RedisOptions = CommonRedisOptions & SentinelConnectionOptions & StandaloneConnectionOptions;
  172. export declare const DEFAULT_REDIS_OPTIONS: RedisOptions;