UNPKG

power-redis

Version:

Production-grade Redis abstraction for Node.js with strict key formatting, safe JSON serialization, advanced list/queue operations, SCAN-based pattern tools, TTL helpers, batch UNLINK deletion, and Redis Streams support. Perfect for high-load microservice

81 lines (78 loc) 4.68 kB
type JsonPrimitive = string | number | boolean | null; type JsonPrimitiveOrUndefined = JsonPrimitive | undefined; type Jsonish = JsonPrimitive | { [key: string]: Jsonish; } | Jsonish[]; interface RedisMultiLike { set(key: string, value: string): this; set(key: string, value: string, ex: 'EX', ttlSec: number): this; rpush(key: string, ...values: string[]): this; lpush(key: string, ...values: string[]): this; lrange(key: string, start: number, stop: number): this; ltrim(key: string, start: number, stop: number): this; lrem(key: string, count: number, value: string): this; zrem(key: string, ...members: string[]): this; zadd(key: string, score: number, member: string): this; expire(key: string, ttlSec: number): this; exec(): Promise<Array<[Error | null, any]>>; } interface IORedisLike { status: 'ready' | 'connecting' | 'reconnecting' | string; scan(cursor: string, matchKeyword: 'MATCH', pattern: string, countKeyword: 'COUNT', count: number): Promise<[nextCursor: string, keys: string[]]>; get(key: string): Promise<string | null>; mget(...keys: string[]): Promise<Array<string | null>>; set(key: string, value: string): Promise<'OK'>; set(key: string, value: string, ex: 'EX', ttlSec: number): Promise<'OK'>; mset(...keyValues: string[]): Promise<'OK'>; incr(key: string, ttl?: number): Promise<number>; llen(key: string): Promise<number>; lrange(key: string, start: number, stop: number): Promise<string[]>; lpop(key: string, count?: number): Promise<string[] | string | null>; rpush(key: string, ...values: string[]): Promise<number>; lpush(key: string, ...values: string[]): Promise<number>; ltrim(key: string, start: number, stop: number): Promise<'OK'>; lrem(key: string, count: number, value: string): Promise<number>; lmove?(source: string, destination: string, whereFrom: 'LEFT' | 'RIGHT', whereTo: 'LEFT' | 'RIGHT'): Promise<string | null>; rpoplpush?(source: string, destination: string): Promise<string | null>; zadd(key: string, ...args: (string | number)[]): Promise<number>; zrem(key: string, ...members: string[]): Promise<number>; zrangebyscore(key: string, min: number | string, max: number | string, ...args: (string | number)[]): Promise<string[]>; expire(key: string, ttlSec: number): Promise<number>; unlink?(...keys: string[]): Promise<number>; del(...keys: string[]): Promise<number>; multi(): RedisMultiLike; script?(subcommand: 'LOAD', script: string): Promise<string>; evalsha?(sha1: string, numKeys: number, ...args: string[]): Promise<any>; eval?(script: string, numKeys: number, ...args: string[]): Promise<any>; } declare abstract class PowerRedis { readonly isStrictCheckConnection: boolean; abstract redis: IORedisLike; checkConnection(): boolean; toPatternString(...parts: Array<string | number>): string; toKeyString(...parts: Array<string | number>): string; fromKeyString(key: string): Array<string>; fromPayload(value: string | null): Jsonish; toPayload(value: Jsonish): string; lpopCountCompat(key: string, count: number): Promise<string[]>; keys(pattern: string, limit?: number, scanSize?: number): Promise<string[]>; getOne(key: string): Promise<Jsonish | null>; getMany(pattern: string, limit?: number, scanSize?: number, chunkSize?: number): Promise<Record<string, Jsonish>>; getList(key: string, limit?: number, remove?: boolean): Promise<Jsonish[]>; getListIterator(key: string, limit?: number, remove?: boolean): AsyncGenerator<Jsonish[], void, unknown>; setOne(key: string, value: any, ttlSec?: number): Promise<'OK'>; setMany(values: Array<{ key: string; value: any; }>, ttlSec?: number): Promise<number>; pushOne(key: string, value: any, ttlSec?: number): Promise<number>; pushMany(key: string, values: Array<any>, ttlSec?: number): Promise<number>; dropMany(pattern: string, size?: number): Promise<number>; incr(key: string, ttl?: number): Promise<number>; expire(key: string, ttl: number): Promise<number>; script(subcommand: 'LOAD', script: string): Promise<string>; xgroup(script: string, stream: string, group: string, from: string, mkstream: string): Promise<void>; xreadgroup(groupKey: string, group: string, consumer: string, blockKey: string, block: number, countKey: string, count: number, streamKey: string, stream: string, condition: string): Promise<Array<any>>; pttl(key: string): Promise<number>; } export { type IORedisLike, type JsonPrimitive, type JsonPrimitiveOrUndefined, type Jsonish, PowerRedis, type RedisMultiLike };