@types/ioredis
Version:
TypeScript definitions for ioredis
1,245 lines (1,011 loc) • 77.9 kB
TypeScript
// Type definitions for ioredis 4.26
// Project: https://github.com/luin/ioredis
// Definitions by: York Yao <https://github.com/plantain-00>
// Christopher Eck <https://github.com/chrisleck>
// Yoga Aliarham <https://github.com/aliarham11>
// Ebrahim <https://github.com/br8h>
// Whemoon Jang <https://github.com/palindrom615>
// Dmitry Motovilov <https://github.com/funthing>
// Oleg Repin <https://github.com/iamolegga>
// Ting-Wai To <https://github.com/tingwai-to>
// Alex Petty <https://github.com/pettyalex>
// Simon Schick <https://github.com/SimonSchick>
// Tianlin <https://github.com/tianlinle>
// Demian Rodriguez <https://github.com/demian85>
// Andrew Lavers <https://github.com/alavers>
// Claudiu Ceia <https://github.com/ClaudiuCeia>
// Asyrique <https://github.com/asyrique>
// Michael Salaverry <https://github.com/barakplasma>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/* =================== USAGE ===================
import * as Redis from "ioredis";
const redis = new Redis();
=============================================== */
/// <reference types="node" />
import { ConnectionOptions } from 'tls';
import { Readable } from 'stream';
import { EventEmitter } from 'events';
interface RedisStatic {
new (port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis;
new (host?: string, options?: IORedis.RedisOptions): IORedis.Redis;
new (options?: IORedis.RedisOptions): IORedis.Redis;
(port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis;
(host?: string, options?: IORedis.RedisOptions): IORedis.Redis;
(options?: IORedis.RedisOptions): IORedis.Redis;
Cluster: IORedis.ClusterStatic;
Command: typeof Command;
}
declare var IORedis: RedisStatic;
export = IORedis;
declare class Commander {
getBuiltinCommands(): string[];
createBuiltinCommand(commandName: string): {};
defineCommand(
name: string,
definition: {
numberOfKeys?: number | undefined;
lua?: string | undefined;
},
): void;
sendCommand(): void;
}
interface CommandOptions {
replyEncoding?: string | null | undefined;
errorStack?: string | undefined;
keyPrefix?: string | undefined;
}
declare class Command {
isCustomCommand: boolean;
args: IORedis.ValueType[];
getSlot(): number | null;
getKeys(): Array<string | Buffer>;
constructor(
name: string,
args: IORedis.ValueType[],
opts?: CommandOptions,
callback?: (err: null, result: any) => void,
);
static setArgumentTransformer(name: string, fn: (args: IORedis.ValueType[]) => IORedis.ValueType[]): void;
static setReplyTransformer(name: string, fn: (result: any) => any): void;
}
// For backwards compatibility
type _Command = typeof Command;
declare namespace IORedis {
type BooleanResponse = 1 | 0;
type Callback<T> = (err: Error | null, res: T) => void;
type KeyType = string | Buffer;
type ValueType = string | Buffer | number | any[];
interface OverloadedCommand<T, U> {
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, cb: Callback<U>): void;
(arg1: T, arg2: T, cb: Callback<U>): void;
(arg1: T | T[], cb: Callback<U>): void;
(cb: Callback<U>): void;
(...args: T[]): Promise<U>;
(arg1: T[]): Promise<U>;
}
interface OverloadedListCommand<T, U> {
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, cb: Callback<U>): void;
(arg1: T, arg2: T, cb: Callback<U>): void;
(arg1: T | T[], cb: Callback<U>): void;
(...args: T[]): Promise<U>;
(arg1: T[]): Promise<U>;
}
interface OverloadedBlockingListCommand<T, U> {
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, timeout: number, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, timeout: number, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, timeout: number, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, timeout: number, cb: Callback<U>): void;
(arg1: T, arg2: T, timeout: number, cb: Callback<U>): void;
(arg1: T, timeout: number, cb: Callback<U>): void;
(arg1: Array<T | number>, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, timeout: number): Promise<U>;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, timeout: number): Promise<U>;
(arg1: T, arg2: T, arg3: T, arg4: T, timeout: number): Promise<U>;
(arg1: T, arg2: T, arg3: T, timeout: number): Promise<U>;
(arg1: T, arg2: T, timeout: number): Promise<U>;
(arg1: T, timeout: number): Promise<U>;
(arg1: Array<T | number>): Promise<U>;
(...args: Array<T | number>): Promise<U>;
}
interface OverloadedSubCommand<T, U> {
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, cb: Callback<U>): void;
(arg1: T, arg2: T | T[], cb: Callback<U>): void;
(arg1: T | T[], cb: Callback<U>): void;
(...args: T[]): Promise<U>;
(arg1: T[]): Promise<U>;
}
interface OverloadedKeyCommand<T, U> {
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, arg7: T, arg8: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, arg7: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, arg3: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, cb: Callback<U>): void;
(key: KeyType, arg1: T | T[], cb: Callback<U>): void;
(key: KeyType, ...args: T[]): Promise<U>;
(key: KeyType, arg1: T[]): Promise<U>;
}
interface OverloadedHashCommand<T, U> {
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(arg1: T, arg2: T, cb: Callback<U>): void;
(data: T[] | { [key: string]: T } | Map<string, T>, cb: Callback<U>): void;
(data: T[] | { [key: string]: T } | Map<string, T>): Promise<U>;
(...args: T[]): Promise<U>;
}
interface OverloadedKeyedHashCommand<T, U> {
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(key: KeyType, arg1: T, arg2: T, cb: Callback<U>): void;
(key: KeyType, data: T[] | { [key: string]: T } | Map<string, ValueType>, cb: Callback<U>): void;
(key: KeyType, data: T[] | { [key: string]: T } | Map<string, ValueType>): Promise<U>;
(key: KeyType, ...args: T[]): Promise<U>;
}
interface OverloadedEvalCommand<T, U> {
(script: string, numKeys: number, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(script: string, numKeys: number, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb: Callback<U>): void;
(script: string, numKeys: number, arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(script: string, numKeys: number, arg1: T, arg2: T, arg3: T, cb: Callback<U>): void;
(script: string, numKeys: number, arg1: T, arg2: T, cb: Callback<U>): void;
(script: string, numKeys: number, arg1: T | T[], cb: Callback<U>): void;
(script: string, numKeys: number, ...args: T[]): Promise<U>;
(script: string, numKeys: number, arg1: T[]): Promise<U>;
// This overload exists specifically to retain compatibility to `redlock`
// All arguments are by default flattened, declaring all possible permuatations
// would be unreasonable (and probably impossible)
(args: ValueType[], callback?: Callback<any>): any;
}
interface OverloadedScanCommand<T, U> {
(key: string, cursor: number, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb: Callback<U>): void;
(key: string, cursor: number, arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb: Callback<U>): void;
(key: string, cursor: number, arg1: T, arg2: T, arg3: T, arg4: T, cb: Callback<U>): void;
(key: string, cursor: number, arg1: T, arg2: T, arg3: T, cb: Callback<U>): void;
(key: string, cursor: number, arg1: T, arg2: T, cb: Callback<U>): void;
(key: string, cursor: number, arg1: T | T[], cb: Callback<U>): void;
(key: string, cursor: number, cb: Callback<U>): void;
(key: string, cursor: number, ...args: T[]): Promise<U>;
(key: string, cursor: number, arg1: T[]): Promise<U>;
}
type Command = _Command;
interface Commands {
bitcount(key: KeyType, callback: Callback<number>): void;
bitcount(key: KeyType, start: number, end: number, callback: (err: Error, res: number) => void): void;
bitcount(key: KeyType): Promise<number>;
bitcount(key: KeyType, start: number, end: number): Promise<number>;
get(key: KeyType, callback: Callback<string | null>): void;
get(key: KeyType): Promise<string | null>;
getBuffer(key: KeyType, callback: Callback<Buffer>): void;
getBuffer(key: KeyType): Promise<Buffer>;
set(
key: KeyType,
value: ValueType,
expiryMode?: string | any[],
time?: number | string,
setMode?: number | string,
): Promise<Ok | null>;
set(key: KeyType, value: ValueType, callback: Callback<Ok>): void;
set(key: KeyType, value: ValueType, setMode: string | any[], callback: Callback<Ok | null>): void;
set(key: KeyType, value: ValueType, expiryMode: string, time: number | string, callback: Callback<Ok>): void;
set(
key: KeyType,
value: ValueType,
expiryMode: string,
time: number | string,
setMode: number | string,
callback: Callback<Ok | null>,
): void;
setBuffer(
key: KeyType,
value: ValueType,
expiryMode?: string | any[],
time?: number | string,
setMode?: number | string,
): Promise<Buffer>;
setBuffer(key: KeyType, value: ValueType, callback: Callback<Buffer>): void;
setBuffer(key: KeyType, value: ValueType, setMode: string, callback: Callback<Buffer>): void;
setBuffer(key: KeyType, value: ValueType, expiryMode: string, time: number, callback: Callback<Buffer>): void;
setBuffer(
key: KeyType,
value: ValueType,
expiryMode: string,
time: number | string,
setMode: number | string,
callback: Callback<Buffer>,
): void;
setnx(key: KeyType, value: ValueType, callback: Callback<BooleanResponse>): void;
setnx(key: KeyType, value: ValueType): Promise<BooleanResponse>;
setex(key: KeyType, seconds: number, value: ValueType, callback: Callback<Ok>): void;
setex(key: KeyType, seconds: number, value: ValueType): Promise<Ok>;
psetex(key: KeyType, milliseconds: number, value: ValueType, callback: Callback<Ok>): void;
psetex(key: KeyType, milliseconds: number, value: ValueType): Promise<Ok>;
append(key: KeyType, value: ValueType, callback: Callback<number>): void;
append(key: KeyType, value: ValueType): Promise<number>;
strlen(key: KeyType, callback: Callback<number>): void;
strlen(key: KeyType): Promise<number>;
del: OverloadedListCommand<KeyType, number>;
unlink: OverloadedListCommand<KeyType, number>;
exists(...keys: KeyType[]): Promise<number>;
exists(key: KeyType, callback: Callback<number>): void;
setbit(key: KeyType, offset: number, value: ValueType, callback: Callback<number>): void;
setbit(key: KeyType, offset: number, value: ValueType): Promise<number>;
getbit(key: KeyType, offset: number, callback: Callback<number>): void;
getbit(key: KeyType, offset: number): Promise<number>;
setrange(key: KeyType, offset: number, value: ValueType, callback: Callback<number>): void;
setrange(key: KeyType, offset: number, value: ValueType): Promise<number>;
getrange(key: KeyType, start: number, end: number, callback: Callback<string>): void;
getrange(key: KeyType, start: number, end: number): Promise<string>;
getrangeBuffer(key: KeyType, start: number, end: number, callback: Callback<Buffer>): void;
getrangeBuffer(key: KeyType, start: number, end: number): Promise<Buffer>;
substr(key: KeyType, start: number, end: number, callback: Callback<string>): void;
substr(key: KeyType, start: number, end: number): Promise<string>;
incr(key: KeyType, callback: Callback<number>): void;
incr(key: KeyType): Promise<number>;
decr(key: KeyType, callback: Callback<number>): void;
decr(key: KeyType): Promise<number>;
mget: OverloadedListCommand<KeyType, Array<string | null>>;
rpush: OverloadedKeyCommand<ValueType, number>;
rpushBuffer: OverloadedKeyCommand<Buffer, number>;
lpush: OverloadedKeyCommand<ValueType, number>;
lpushBuffer: OverloadedKeyCommand<Buffer, number>;
rpushx: OverloadedKeyCommand<ValueType, number>;
lpushx: OverloadedKeyCommand<ValueType, number>;
linsert(
key: KeyType,
direction: 'BEFORE' | 'AFTER',
pivot: string,
value: ValueType,
callback: Callback<number>,
): void;
linsert(key: KeyType, direction: 'BEFORE' | 'AFTER', pivot: string, value: ValueType): Promise<number>;
rpop(key: KeyType, callback: Callback<string>): void;
rpop(key: KeyType): Promise<string>;
rpop(key: KeyType, count: number, callback: Callback<string[]>): void;
rpop(key: KeyType, count: number): Promise<string[]>;
lpop(key: KeyType, callback: Callback<string>): void;
lpop(key: KeyType): Promise<string>;
lpop(key: KeyType, count: number, callback: Callback<string[]>): void;
lpop(key: KeyType, count: number): Promise<string[]>;
lpos(key: KeyType, value: ValueType, rank?: number, count?: number, maxlen?: number): Promise<number | null>;
lpopBuffer(key: KeyType, callback: Callback<Buffer>): void;
lpopBuffer(key: KeyType): Promise<Buffer>;
brpop: OverloadedBlockingListCommand<KeyType, [string, string]>;
blpop: OverloadedBlockingListCommand<KeyType, [string, string]>;
brpoplpush(source: string, destination: string, timeout: number, callback: Callback<string>): void;
brpoplpush(source: string, destination: string, timeout: number): Promise<string>;
llen(key: KeyType, callback: Callback<number>): void;
llen(key: KeyType): Promise<number>;
lindex(key: KeyType, index: number, callback: Callback<string>): void;
lindex(key: KeyType, index: number): Promise<string>;
lset(key: KeyType, index: number, value: ValueType, callback: Callback<Ok>): void;
lset(key: KeyType, index: number, value: ValueType): Promise<Ok>;
lrange(key: KeyType, start: number, stop: number, callback: Callback<string[]>): void;
lrange(key: KeyType, start: number, stop: number): Promise<string[]>;
lrangeBuffer(key: KeyType, start: number, stop: number, callback: Callback<Buffer[]>): void;
lrangeBuffer(key: KeyType, start: number, stop: number): Promise<Buffer[]>;
ltrim(key: KeyType, start: number, stop: number, callback: Callback<Ok>): void;
ltrim(key: KeyType, start: number, stop: number): Promise<Ok>;
lrem(key: KeyType, count: number, value: ValueType, callback: Callback<number>): void;
lrem(key: KeyType, count: number, value: ValueType): Promise<number>;
rpoplpush(source: string, destination: string, callback: Callback<string>): void;
rpoplpush(source: string, destination: string): Promise<string>;
rpoplpushBuffer(source: string, destination: string, callback: Callback<Buffer>): void;
rpoplpushBuffer(source: string, destination: string): Promise<Buffer>;
sadd: OverloadedKeyCommand<ValueType, number>;
srem: OverloadedKeyCommand<ValueType, number>;
smove(source: string, destination: string, member: string, callback: Callback<BooleanResponse>): void;
smove(source: string, destination: string, member: string): Promise<BooleanResponse>;
sismember(key: KeyType, member: string, callback: Callback<BooleanResponse>): void;
sismember(key: KeyType, member: string): Promise<BooleanResponse>;
scard(key: KeyType, callback: Callback<number>): void;
scard(key: KeyType): Promise<number>;
spop(key: KeyType, callback: Callback<string | null>): void;
spop(key: KeyType): Promise<string | null>;
spop(key: KeyType, count: number, callback: Callback<string[]>): void;
spop(key: KeyType, count: number): Promise<string[]>;
srandmember(key: KeyType, callback: Callback<string | null>): void;
srandmember(key: KeyType): Promise<string | null>;
srandmember(key: KeyType, count: number, callback: Callback<string[]>): void;
srandmember(key: KeyType, count: number): Promise<string[]>;
sinter: OverloadedListCommand<KeyType, string[]>;
sinterstore: OverloadedKeyCommand<KeyType, number>;
sunion: OverloadedListCommand<KeyType, string[]>;
sunionstore: OverloadedKeyCommand<KeyType, number>;
sdiff: OverloadedListCommand<KeyType, string[]>;
sdiffstore: OverloadedKeyCommand<KeyType, number>;
smembers(key: KeyType, callback: Callback<string[]>): void;
smembers(key: KeyType): Promise<string[]>;
zadd: OverloadedKeyCommand<KeyType | number, number | string>;
zaddBuffer(key: KeyType, score1: number, member1: Buffer, callback: Callback<string | number>): void;
zaddBuffer(key: KeyType, score1: number, member1: Buffer): Promise<string | number>;
zincrby(key: KeyType, increment: number, member: string, callback: Callback<string>): void;
zincrby(key: KeyType, increment: number, member: string): Promise<string>;
zpopmin(key: KeyType, callback: Callback<string[]>): void;
zpopmin(key: KeyType, count: number, callback: Callback<string[]>): void;
zpopmin(key: KeyType, count?: number): Promise<string[]>;
zpopmax(key: KeyType, callback: Callback<string[]>): void;
zpopmax(key: KeyType, count: number, callback: Callback<string[]>): void;
zpopmax(key: KeyType, count?: number): Promise<string[]>;
bzpopmin: OverloadedBlockingListCommand<KeyType, [string, string, string]>;
bzpopmax: OverloadedBlockingListCommand<KeyType, [string, string, string]>;
zrem: OverloadedKeyCommand<ValueType, number>;
zremrangebyscore(key: KeyType, min: number | string, max: number | string, callback: Callback<number>): void;
zremrangebyscore(key: KeyType, min: number | string, max: number | string): Promise<number>;
zremrangebyrank(key: KeyType, start: number, stop: number, callback: Callback<number>): void;
zremrangebyrank(key: KeyType, start: number, stop: number): Promise<number>;
zremrangebylex(
key: KeyType,
min: string,
max: string,
): Promise<number>;
zremrangebylex(
key: KeyType,
min: string,
max: string,
callback: Callback<number>
): void;
zunionstore: OverloadedKeyCommand<KeyType | number, number>;
zinterstore: OverloadedKeyCommand<KeyType | number, number>;
zrange(key: KeyType, start: number, stop: number, callback: Callback<string[]>): void;
zrange(key: KeyType, start: number, stop: number, withScores: 'WITHSCORES', callback: Callback<string[]>): void;
zrange(key: KeyType, start: number, stop: number, withScores?: 'WITHSCORES'): Promise<string[]>;
zrangeBuffer(key: KeyType, start: number, stop: number, callback: Callback<Buffer[]>): void;
zrangeBuffer(key: KeyType, start: number, stop: number, withScores: 'WITHSCORES', callback: Callback<Buffer[]>): void;
zrangeBuffer(key: KeyType, start: number, stop: number, withScores?: 'WITHSCORES'): Promise<Buffer[]>;
zrevrange(key: KeyType, start: number, stop: number, callback: Callback<string[]>): void;
zrevrange(
key: KeyType,
start: number,
stop: number,
withScores: 'WITHSCORES',
callback: Callback<string[]>,
): void;
zrevrange(key: KeyType, start: number, stop: number, withScores?: 'WITHSCORES'): Promise<string[]>;
zrevrangeBuffer(key: KeyType, start: number, stop: number, callback: Callback<Buffer[]>): void;
zrevrangeBuffer(
key: KeyType,
start: number,
stop: number,
withScores: 'WITHSCORES',
callback: Callback<Buffer[]>,
): void;
zrevrangeBuffer(key: KeyType, start: number, stop: number, withScores?: 'WITHSCORES'): Promise<Buffer[]>;
zrangebyscore(
key: KeyType,
min: number | string,
max: number | string,
withScores?: 'WITHSCORES',
): Promise<string[]>;
zrangebyscore(
key: KeyType,
min: number | string,
max: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
): Promise<string[]>;
zrangebyscore(
key: KeyType,
min: number | string,
max: number | string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<string[]>;
zrangebyscore(key: KeyType, min: number | string, max: number | string, callback: Callback<string[]>): void;
zrangebyscore(
key: KeyType,
min: number | string,
max: number | string,
withScores: 'WITHSCORES',
callback: Callback<string[]>,
): void;
zrangebyscore(
key: KeyType,
min: number | string,
max: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<string[]>,
): void;
zrangebyscore(
key: KeyType,
min: number | string,
max: number | string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<string[]>,
): void;
zrangebyscoreBuffer(
key: KeyType,
min: number | string,
max: number | string,
withScores?: 'WITHSCORES',
): Promise<Buffer[]>;
zrangebyscoreBuffer(
key: KeyType,
min: number | string,
max: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
): Promise<Buffer[]>;
zrangebyscoreBuffer(
key: KeyType,
min: number | string,
max: number | string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<Buffer[]>;
zrangebyscoreBuffer(key: KeyType, min: number | string, max: number | string, callback: Callback<Buffer[]>): void;
zrangebyscoreBuffer(
key: KeyType,
min: number | string,
max: number | string,
withScores: 'WITHSCORES',
callback: Callback<Buffer[]>,
): void;
zrangebyscoreBuffer(
key: KeyType,
min: number | string,
max: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<Buffer[]>,
): void;
zrangebyscoreBuffer(
key: KeyType,
min: number | string,
max: number | string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<Buffer[]>,
): void;
zrevrangebyscore(
key: KeyType,
max: number | string,
min: number | string,
withScores?: 'WITHSCORES',
): Promise<string[]>;
zrevrangebyscore(
key: KeyType,
max: number | string,
min: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
): Promise<string[]>;
zrevrangebyscore(
key: KeyType,
max: number | string,
min: number | string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<string[]>;
zrevrangebyscore(key: KeyType, max: number | string, min: number | string, callback: Callback<string[]>): void;
zrevrangebyscore(
key: KeyType,
max: number | string,
min: number | string,
withScores: 'WITHSCORES',
callback: Callback<string[]>,
): void;
zrevrangebyscore(
key: KeyType,
max: number | string,
min: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<string[]>,
): void;
zrevrangebyscore(
key: KeyType,
max: number | string,
min: number | string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<string[]>,
): void;
zrevrangebyscoreBuffer(
key: KeyType,
max: number | string,
min: number | string,
withScores?: 'WITHSCORES',
): Promise<Buffer[]>;
zrevrangebyscoreBuffer(
key: KeyType,
max: number | string,
min: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
): Promise<Buffer[]>;
zrevrangebyscoreBuffer(
key: KeyType,
max: number | string,
min: number | string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<Buffer[]>;
zrevrangebyscoreBuffer(key: KeyType, max: number | string, min: number | string, callback: Callback<Buffer[]>): void;
zrevrangebyscoreBuffer(
key: KeyType,
max: number | string,
min: number | string,
withScores: 'WITHSCORES',
callback: Callback<Buffer[]>,
): void;
zrevrangebyscoreBuffer(
key: KeyType,
max: number | string,
min: number | string,
withScores: 'WITHSCORES',
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<Buffer[]>,
): void;
zrevrangebyscoreBuffer(
key: KeyType,
max: number | string,
min: number | string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<Buffer[]>,
): void;
zrangebylex(
key: KeyType,
min: string,
max: string,
): Promise<string[]>;
zrangebylex(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<string[]>;
zrangebylex(
key: KeyType,
min: string,
max: string,
callback: Callback<string[]>,
): void;
zrangebylex(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<string[]>,
): void;
zrangebylexBuffer(
key: KeyType,
min: string,
max: string,
): Promise<Buffer[]>;
zrangebylexBuffer(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<Buffer[]>;
zrangebylexBuffer(
key: KeyType,
min: string,
max: string,
callback: Callback<Buffer[]>,
): void;
zrangebylexBuffer(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<Buffer[]>,
): void;
zrevrangebylex(
key: KeyType,
min: string,
max: string,
): Promise<string[]>;
zrevrangebylex(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<string[]>;
zrevrangebylex(
key: KeyType,
min: string,
max: string,
callback: Callback<string[]>,
): void;
zrevrangebylex(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<string[]>,
): void;
zrevrangebylexBuffer(
key: KeyType,
min: string,
max: string,
): Promise<Buffer[]>;
zrevrangebylexBuffer(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
): Promise<Buffer[]>;
zrevrangebylexBuffer(
key: KeyType,
min: string,
max: string,
callback: Callback<Buffer[]>,
): void;
zrevrangebylexBuffer(
key: KeyType,
min: string,
max: string,
limit: 'LIMIT',
offset: number,
count: number,
callback: Callback<Buffer[]>,
): void;
zcount(key: KeyType, min: number | string, max: number | string, callback: Callback<number>): void;
zcount(key: KeyType, min: number | string, max: number | string): Promise<number>;
zcard(key: KeyType, callback: Callback<number>): void;
zcard(key: KeyType): Promise<number>;
zscore(key: KeyType, member: string, callback: Callback<string>): void;
zscore(key: KeyType, member: string): Promise<string>;
zrank(key: KeyType, member: string, callback: Callback<number | null>): void;
zrank(key: KeyType, member: string): Promise<number | null>;
zrevrank(key: KeyType, member: string, callback: Callback<number | null>): void;
zrevrank(key: KeyType, member: string): Promise<number | null>;
hset: OverloadedKeyedHashCommand<ValueType, number>;
hsetBuffer(key: KeyType, field: string, value: ValueType, callback: Callback<BooleanResponse>): void;
hsetBuffer(key: KeyType, field: string, value: ValueType): Promise<Buffer>;
hsetnx(key: KeyType, field: string, value: ValueType, callback: Callback<BooleanResponse>): void;
hsetnx(key: KeyType, field: string, value: ValueType): Promise<BooleanResponse>;
hget(key: KeyType, field: string, callback: Callback<string | null>): void;
hget(key: KeyType, field: string): Promise<string | null>;
hgetBuffer(key: KeyType, field: string, callback: Callback<Buffer>): void;
hgetBuffer(key: KeyType, field: string): Promise<Buffer>;
hmset: OverloadedKeyedHashCommand<ValueType, Ok>;
hmget: OverloadedKeyCommand<KeyType, Array<string | null>>;
hstrlen(key: KeyType, field: string, callback: Callback<number>): void;
hstrlen(key: KeyType, field: string): Promise<number>;
hincrby(key: KeyType, field: string, increment: number, callback: Callback<number>): void;
hincrby(key: KeyType, field: string, increment: number): Promise<number>;
hincrbyfloat(key: KeyType, field: string, increment: number, callback: Callback<number>): void;
hincrbyfloat(key: KeyType, field: string, increment: number): Promise<number>;
hdel: OverloadedKeyCommand<KeyType, number>;
hlen(key: KeyType, callback: Callback<number>): void;
hlen(key: KeyType): Promise<number>;
hkeys(key: KeyType, callback: Callback<string[]>): void;
hkeys(key: KeyType): Promise<string[]>;
hvals(key: KeyType, callback: Callback<string[]>): void;
hvals(key: KeyType): Promise<string[]>;
hgetall(key: KeyType, callback: Callback<Record<string, string>>): void;
hgetall(key: KeyType): Promise<Record<string, string>>;
hexists(key: KeyType, field: string, callback: Callback<BooleanResponse>): void;
hexists(key: KeyType, field: string): Promise<BooleanResponse>;
geoadd(key: KeyType, longitude: number, latitude: number, member: string, callback: Callback<number>): void;
geoadd(key: KeyType, longitude: number, latitude: number, member: string): Promise<number>;
geodist(key: KeyType, member1: string, member2: string, unit: 'm'|'km'|'ft'|'mi', callback: Callback<string | null>): void;
geodist(key: KeyType, member1: string, member2: string, unit: 'm'|'km'|'ft'|'mi'): Promise<string | null>;
geohash: OverloadedKeyCommand<string, string[]>;
geopos: OverloadedKeyCommand<string, string[]>;
georadius(
key: KeyType,
longitude: number,
latitude: number,
radius: number,
unit: 'm'|'km'|'ft'|'mi',
callback: Callback<string[]>,
): void;
georadius(
key: KeyType,
longitude: number,
latitude: number,
radius: number,
unit: 'm'|'km'|'ft'|'mi',
sort?: 'ASC' | 'DESC'
): Promise<string[]>;
georadius(
key: KeyType,
longitude: number,
latitude: number,
radius: number,
unit: 'm'|'km'|'ft'|'mi',
count: 'COUNT',
countValue: number,
sort?: 'ASC' | 'DESC'
): Promise<string[]>;
georadiusbymember(key: KeyType, member: string, radius: number, unit: 'm'|'km'|'ft'|'mi', callback: Callback<string[]>): void;
georadiusbymember(key: KeyType, member: string, radius: number, unit: 'm'|'km'|'ft'|'mi', count: 'COUNT', countValue: number, callback: Callback<string[]>): void;
georadiusbymember(key: KeyType, member: string, radius: number, unit: 'm'|'km'|'ft'|'mi'): Promise<string[]>;
georadiusbymember(key: KeyType, member: string, radius: number, unit: 'm'|'km'|'ft'|'mi', count: 'COUNT', countValue: number): Promise<string[]>;
incrby(key: KeyType, increment: number, callback: Callback<number>): void;
incrby(key: KeyType, increment: number): Promise<number>;
incrbyfloat(key: KeyType, increment: number, callback: Callback<number>): void;
incrbyfloat(key: KeyType, increment: number): Promise<number>;
decrby(key: KeyType, decrement: number, callback: Callback<number>): void;
decrby(key: KeyType, decrement: number): Promise<number>;
getset(key: KeyType, value: ValueType, callback: Callback<string | null>): void;
getset(key: KeyType, value: ValueType): Promise<string | null>;
mset: OverloadedHashCommand<ValueType, Ok>;
msetnx: OverloadedHashCommand<ValueType, BooleanResponse>;
memory(argument: 'USAGE', key: KeyType, callback?: Callback<number>): Promise<number>;
randomkey(callback: Callback<string>): void;
randomkey(): Promise<string>;
select(index: number, callback: Callback<Ok>): void;
select(index: number): Promise<Ok>;
move(key: KeyType, db: string, callback: Callback<BooleanResponse>): void;
move(key: KeyType, db: string): Promise<BooleanResponse>;
rename(key: KeyType, newkey: KeyType, callback: Callback<Ok>): void;
rename(key: KeyType, newkey: KeyType): Promise<Ok>;
renamenx(key: KeyType, newkey: KeyType, callback: Callback<BooleanResponse>): void;
renamenx(key: KeyType, newkey: KeyType): Promise<BooleanResponse>;
expire(key: KeyType, seconds: number, callback: Callback<BooleanResponse>): void;
expire(key: KeyType, seconds: number): Promise<BooleanResponse>;
pexpire(key: KeyType, milliseconds: number, callback: Callback<BooleanResponse>): void;
pexpire(key: KeyType, milliseconds: number): Promise<BooleanResponse>;
expireat(key: KeyType, timestamp: number, callback: Callback<BooleanResponse>): void;
expireat(key: KeyType, timestamp: number): Promise<BooleanResponse>;
pexpireat(key: KeyType, millisecondsTimestamp: number, callback: Callback<BooleanResponse>): void;
pexpireat(key: KeyType, millisecondsTimestamp: number): Promise<BooleanResponse>;
keys(pattern: string, callback: Callback<string[]>): void;
keys(pattern: string): Promise<string[]>;
dbsize(callback: Callback<number>): void;
dbsize(): Promise<number>;
auth(username: string, password: string, callback: Callback<string>): void;
auth(password: string, callback: Callback<string>): void;
// tslint:disable-next-line unified-signatures
auth(username: string, password: string): Promise<string>;
auth(password: string): Promise<string>;
ping(callback: Callback<string>): void;
ping(message: string, callback: Callback<string>): void;
ping(message?: string): Promise<string>;
echo(message: string, callback: Callback<string>): void;
echo(message: string): Promise<string>;
save(callback: Callback<string>): void;
save(): Promise<string>;
bgsave(callback: Callback<string>): void;
bgsave(): Promise<string>;
bgrewriteaof(callback: Callback<string>): void;
bgrewriteaof(): Promise<string>;
shutdown(save: 'SAVE' | 'NOSAVE', callback: Callback<never>): void;
shutdown(save: 'SAVE' | 'NOSAVE'): Promise<never>;
lastsave(callback: Callback<number>): void;
lastsave(): Promise<number>;
type(key: KeyType, callback: Callback<string>): void;
type(key: KeyType): Promise<string>;
multi(commands?: string[][], options?: MultiOptions): Pipeline;
multi(options: { pipeline: false }): Promise<Ok>;
exec(callback: Callback<Array<[Error | null, string]>>): void;
exec(): Promise<Array<[Error | null, string]>>;
discard(callback: Callback<Ok>): void;
discard(): Promise<Ok>;
sync(callback: Callback<any>): void;
sync(): Promise<any>;
flushdb(callback: Callback<Ok>): void;
flushdb(): Promise<Ok>;
flushall(callback: Callback<Ok>): void;
flushall(): Promise<Ok>;
sort: OverloadedListCommand<KeyType | number, string[] | number>;
info(callback: Callback<string>): void;
info(section: string, callback: Callback<string>): void;
info(section?: string): Promise<string>;
time(callback: Callback<[string, string]>): void;
time(): Promise<[string, string]>;
monitor(callback: Callback<EventEmitter>): void;
monitor(): Promise<EventEmitter>;
ttl(key: KeyType, callback: Callback<number>): void;
ttl(key: KeyType): Promise<number>;
pttl(key: KeyType, callback: Callback<number>): void;
pttl(key: KeyType): Promise<number>;
persist(key: KeyType, callback: Callback<BooleanResponse>): void;
persist(key: KeyType): Promise<BooleanResponse>;
slaveof(host: string, port: number, callback: Callback<string>): void;
slaveof(host: string, port: number): Promise<string>;
debug: OverloadedSubCommand<ValueType, any>;
config(op: 'GET', cfg: string): Promise<string[]>;
config(op: 'GET', cfg: string, callback: Callback<string[]>): void;
config(op: 'REWRITE' | 'RESETSTAT'): Promise<Ok>;
config(op: 'REWRITE' | 'RESETSTAT', callback: Callback<Ok>): void;
config(op: 'SET', key: string, value: ValueType): Promise<Ok>;
config(op: 'SET', key: string, value: ValueType, callback: Callback<Ok>): void;
subscribe: OverloadedListCommand<string, number>;
unsubscribe: OverloadedCommand<string, number>;
psubscribe: OverloadedListCommand<string, number>;
punsubscribe: OverloadedCommand<string, number>;
publish(channel: string, message: string, callback: Callback<number>): void;
publish(channel: string, message: string): Promise<number>;
publishBuffer(channel: string, message: Buffer): Promise<number>;
watch: OverloadedListCommand<KeyType, Ok>;
unwatch(callback: Callback<string>): void;
unwatch(): Promise<string>;
cluster: OverloadedSubCommand<ValueType, any>;
restore: OverloadedListCommand<ValueType, Ok>;
migrate: OverloadedListCommand<ValueType, Ok | 'NOKEY'>;
dump(key: KeyType, callback: Callback<string>): void;
dump(key: KeyType): Promise<string>;
object: OverloadedListCommand<ValueType, any>;
client: OverloadedSubCommand<ValueType, any>;
eval: OverloadedEvalCommand<ValueType, any>;
evalsha: OverloadedEvalCommand<ValueType, any>;
script: OverloadedSubCommand<ValueType, any>;
quit(callback: Callback<Ok>): void;
quit(): Promise<Ok>;
scan(cursor: number | string, matchOption: 'match' | 'MATCH', pattern: string): Promise<[string, string[]]>;
scan(
cursor: number | string,
matchOption: 'match' | 'MATCH',
pattern: string,
callback: Callback<[string, string[]]>,
): void;
scan(cursor: number | string, countOption: 'count' | 'COUNT', count: number): Promise<[string, string[]]>;
scan(
cursor: number | string,
countOption: 'count' | 'COUNT',
count: number,
callback: Callback<[string, string[]]>,
): void;
scan(
cursor: number | string,
matchOption: 'match' | 'MATCH',
pattern: string,
countOption: 'count' | 'COUNT',
count: number,
): Promise<[string, string[]]>;
scan(
cursor: number | string,
matchOption: 'match' | 'MATCH',
pattern: string,
countOption: 'count' | 'COUNT',
count: number,
callback: Callback<[string, string[]]>,
): void;
scan(
cursor: number | string,
countOption: 'count' | 'COUNT',
count: number,
matchOption: 'match' | 'MATCH',
pattern: string,
): Promise<[string, string[]]>;
scan(
cursor: number | string,
countOption: 'count' | 'COUNT',
count: number,
matchOption: 'match' | 'MATCH',
pattern: string,
callback: Callback<[string, string[]]>,
): void;
sscan: OverloadedKeyCommand<ValueType, [string, string[]]>;
hscan: OverloadedKeyCommand<ValueType, [string, string[]]>;
zscan: OverloadedKeyCommand<ValueType, [string, string[]]>;
pfmerge: OverloadedKeyCommand<KeyType, Ok>;
pfadd: OverloadedKeyCommand<string, number>;
pfcount: OverloadedListCommand<KeyType, number>;
pipeline(commands?: string[][]): Pipeline;
scanStream(options?: ScanStreamOption): Readable;
sscanStream(key: KeyType, options?: ScanStreamOption): Readable;
hscanStream(key: KeyType, options?: ScanStreamOption): Readable;
zscanStream(key: KeyType, options?: ScanStreamOption): Readable;
xack: OverloadedKeyCommand<ValueType, number>;
xadd: OverloadedKeyCommand<ValueType, string>;
xclaim: OverloadedKeyCommand<ValueType, Array<[string, string[]]>>;
xdel: OverloadedKeyCommand<string, number>;
xgroup: OverloadedSubCommand<ValueType, Ok>;
xinfo: OverloadedSubCommand<ValueType, any>;
xlen(key: KeyType): Promise<number>;
xlen(key: KeyType, callback: Callback<number>): void;
xpending: OverloadedKeyCommand<ValueType, any>;
xrange: OverloadedKeyCommand<ValueType, Array<[string, string[]]>>;
xread: OverloadedListCommand<ValueType, Array<[string, Array<[string, string[]]>]>>;
xreadgroup: OverloadedKeyCommand<ValueType, Array<[string, string[]]>>;
xrevrange: OverloadedKeyCommand<ValueType, Array<[string, string[]]>>;
xtrim: OverloadedKeyCommand<ValueType, number>;
}
interface Redis extends EventEmitter, Commander, Commands {
Promise: typeof Promise;
readonly options: RedisOptions;
readonly status: string;
connect(callback?: () => void): Promise<void>;
disconnect(reconnect?: boolean): void;
duplicate(): Redis;
send_command(command: string, ...args: ValueType[]): Promise<any>;
}
interface Pipeline {
readonly redis: Redis | Cluster;
readonly isCluster: boolean;
readonly options: RedisOptions | ClusterOptions;
readonly length: number;
bitcount(key: KeyType, callback?: Callback<number>): Pipeline;
bitcount(key: KeyType, start: number, end: number, callback?: Callback<number>): Pipeline;
get(key: KeyType, callback?: Callback<string>): Pipeline;
getBuffer(key: KeyType, callback?: Callback<Buffer>): Pipeline;
set(key: KeyType, value: ValueType, callback?: Callback<string>): Pipeline;
set(key: KeyType, value: ValueType, setMode: string, callback?: Callback<string>): Pipeline;
set(key: KeyType, value: ValueType, expiryMode: string, time: number, callback?: Callback<string>): Pipeline;
set(
key: KeyType,
value: ValueType,
expiryMode: string,
time: number,
setMode: string,
callback?: Callback<string>,
): Pipeline;
setBuffer(key: KeyType, value: ValueType, callback?: Callback<Buffer>): Pipeline;
setBuffer(key: KeyType, value: ValueType, setMode: string, callback?: Callback<Buffer>): Pipeline;
setBuffer(
key: KeyType,
value: ValueType,
expiryMode: string,
time: number,
callback?: Callback<Buffer>,
): Pipeline;
setBuffer(
key: KeyType,
value: ValueType,
expiryMode: string,
time: number,
setMode: string,
callback?: Callback<Buffer>,
): Pipeline;
setnx(key: KeyType, value: ValueType, callback?: Callback<BooleanResponse>): Pipeline;
setex(key: KeyType, seconds: number, value: ValueType, callback?: Callback<Ok>): Pipeline;
psetex(key: KeyType, milliseconds: number, value: ValueType, callback?: Callback<Ok>): Pipeline;
append(key: KeyType, value: ValueType, callback?: Callback<number>): Pipeline;
strlen(key: KeyType, callback?: Callback<number>): Pipeline;
del(...keys: KeyType[]): Pipeline;
unlink(...keys: KeyType[]): Pipeline;
exists(...keys: KeyType[]): Pipeline;
setbit(key: KeyType, offset: number, value: ValueType, callback?: Callback<number>): Pipeline;
getbit(key: KeyType, offset: number, callback?: Callback<number>): Pipeline;
setrange(key: KeyType, offset: number, value: ValueType, callback?: Callback<number>): Pipeline;
getrange(key: KeyType, start: number, end: number, callback?: Callback<string>): Pipeline;
getrangeBuffer(key: KeyType, start: number, end: number, callback?: Callback<Buffer>): Pipeline;
substr(key: KeyType, start: number, end: number, callback?: Callback<string>): Pipeline;
incr(key: KeyType, callback?: Callback<number>):