ioredis-cache
Version:
A promise-based cache package for Nodejs using IORedis
65 lines (64 loc) • 2.56 kB
TypeScript
import type Redis from "ioredis";
import type { RedisKey } from "ioredis";
declare type Key = RedisKey | number;
declare type Awaitable<T> = T | Promise<T>;
export declare class AcquireFailedError extends Error {
readonly cause?: unknown;
constructor(message?: string, cause?: unknown);
}
export declare class ReleaseFailedError extends Error {
readonly cause?: unknown;
constructor(message?: string, cause?: unknown);
}
export declare type AcquireDesire<K extends string | number> = {
key: K;
desireAmount: number;
limitAmount?: number;
};
export declare type AcquiredResult<K extends string | number> = {
key: K;
currentAmount: number;
acquiredAmount: number;
lackingAmount: number;
};
export declare type AcquireOptions = {
prefix?: string;
float?: boolean;
limit?: number;
};
export declare type AcquireOptionsInput = AcquireOptions | boolean;
export declare type ReleaseItem<K extends string | number> = {
key: K;
amount: number;
};
export declare class Acquire {
private readonly redis;
constructor(redis: Redis);
acquire<T>(key: Key, amount: number, fn: (currentAmount: number, acquiredAmount: number, lackingAmount: number) => Awaitable<T>, options?: AcquireOptionsInput): Promise<T>;
hashAcquire<T>(key: Key, id: Key, amount: number, fn: (currentAmount: number, acquiredAmount: number, lackingAmount: number) => Awaitable<T>, options?: AcquireOptionsInput): Promise<T>;
acquireMany<K extends string | number, T>(items: AcquireDesire<K>[], fn: (acquireResult: AcquiredResult<K>[]) => Awaitable<T>, options?: AcquireOptions): Promise<T>;
hashAcquireMany<K extends string | number, T>(hashKey: string, items: AcquireDesire<K>[], fn: (acquireResult: AcquiredResult<K>[]) => Awaitable<T>, options?: AcquireOptions): Promise<T>;
private getChangeCommand;
private getHashChangeCommand;
private getAcquireCommand;
private getHashAcquireCommand;
private releaseMany;
private hashReleaseMany;
private getReleaseCommand;
private getHashReleaseCommand;
private releaseBy;
private acquireBy;
private executeAcquirePipeline;
private releaseAfterAcquireFailure;
private releaseLackingAmounts;
private releaseSingleLackingAmount;
private releaseSingleHashLackingAmount;
private runAcquireCallback;
private releaseAfterCallbackFailure;
private getFailedIndexes;
private getDesiredReleaseItems;
private getAcquiredReleaseItems;
private getAcquiredResults;
private getAcquiredResult;
}
export {};