UNPKG

@valkey/client

Version:

The source code and documentation for this package are in the main [node-redis](https://github.com/redis/node-redis) repo.

62 lines (61 loc) 3.14 kB
/// <reference types="node" /> /// <reference types="node" /> import { ValkeyClientType } from "../client"; import { ValkeyClusterOptions } from "."; import { ValkeyCommandArgument, ValkeyFunctions, ValkeyModules, ValkeyScripts } from "../commands"; import { ChannelListeners } from "../client/pub-sub"; import { EventEmitter } from "stream"; interface NodeAddress { host: string; port: number; } export type NodeAddressMap = { [address: string]: NodeAddress; } | ((address: string) => NodeAddress | undefined); type ValueOrPromise<T> = T | Promise<T>; type ClientOrPromise<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> = ValueOrPromise<ValkeyClientType<M, F, S>>; export interface Node<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> { address: string; client?: ClientOrPromise<M, F, S>; } export interface ShardNode<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> extends Node<M, F, S> { id: string; host: string; port: number; readonly: boolean; } export interface MasterNode<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> extends ShardNode<M, F, S> { pubSubClient?: ClientOrPromise<M, F, S>; } export interface Shard<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> { master: MasterNode<M, F, S>; replicas?: Array<ShardNode<M, F, S>>; nodesIterator?: IterableIterator<ShardNode<M, F, S>>; } export type PubSubNode<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> = Required<Node<M, F, S>>; export type OnShardedChannelMovedError = (err: unknown, channel: string, listeners?: ChannelListeners) => void; export default class ValkeyClusterSlots<M extends ValkeyModules, F extends ValkeyFunctions, S extends ValkeyScripts> { #private; slots: Shard<M, F, S>[]; shards: Shard<M, F, S>[]; masters: ShardNode<M, F, S>[]; replicas: ShardNode<M, F, S>[]; readonly nodeByAddress: Map<string, ShardNode<M, F, S> | MasterNode<M, F, S>>; pubSubNode?: PubSubNode<M, F, S>; get isOpen(): boolean; constructor(options: ValkeyClusterOptions<M, F, S>, emit: EventEmitter["emit"]); connect(): Promise<void>; nodeClient(node: ShardNode<M, F, S>): ClientOrPromise<M, F, S>; rediscover(startWith: ValkeyClientType<M, F, S>): Promise<void>; quit(): Promise<void>; disconnect(): Promise<void>; getClient(firstKey: ValkeyCommandArgument | undefined, isReadonly: boolean | undefined): ClientOrPromise<M, F, S>; getRandomNode(): ShardNode<M, F, S>; getSlotRandomNode(slotNumber: number): ShardNode<M, F, S>; getMasterByAddress(address: string): ClientOrPromise<M, F, S> | undefined; getPubSubClient(): ClientOrPromise<M, F, S>; executeUnsubscribeCommand(unsubscribe: (client: ValkeyClientType<M, F, S>) => Promise<void>): Promise<void>; getShardedPubSubClient(channel: string): ClientOrPromise<M, F, S>; executeShardedUnsubscribeCommand(channel: string, unsubscribe: (client: ValkeyClientType<M, F, S>) => Promise<void>): Promise<void>; } export {};