@trieb.work/nextjs-turbo-redis-cache
Version:
The ultimate Redis caching solution for Next.js. Built for production-ready, large-scale projects, it delivers unparalleled performance and efficiency with features tailored for high-traffic applications.
53 lines (49 loc) • 2.35 kB
text/typescript
import { CacheHandler, IncrementalCache, CacheHandlerValue } from 'next/dist/server/lib/incremental-cache';
type GetParams = Parameters<IncrementalCache['get']>;
type SetParams = Parameters<IncrementalCache['set']>;
type RevalidateParams = Parameters<IncrementalCache['revalidateTag']>;
type CreateRedisStringsHandlerOptions = {
database?: number;
keyPrefix?: string;
timeoutMs?: number;
revalidateTagQuerySize?: number;
sharedTagsKey?: string;
avgResyncIntervalMs?: number;
redisGetDeduplication?: boolean;
inMemoryCachingTime?: number;
defaultStaleAge?: number;
estimateExpireAge?: (staleAge: number) => number;
};
declare class RedisStringsHandler implements CacheHandler {
private client;
private sharedTagsMap;
private revalidatedTagsMap;
private inMemoryDeduplicationCache;
private redisGet;
private redisDeduplicationHandler;
private deduplicatedRedisGet;
private timeoutMs;
private keyPrefix;
private redisGetDeduplication;
private inMemoryCachingTime;
private defaultStaleAge;
private estimateExpireAge;
constructor({ database, keyPrefix, sharedTagsKey, timeoutMs, revalidateTagQuerySize, avgResyncIntervalMs, redisGetDeduplication, inMemoryCachingTime, defaultStaleAge, estimateExpireAge, }: CreateRedisStringsHandlerOptions);
resetRequestCache(...args: never[]): void;
private assertClientIsReady;
get(key: GetParams[0], ctx: GetParams[1]): Promise<(CacheHandlerValue & {
lastModified: number;
}) | null>;
set(key: SetParams[0], data: SetParams[1] & {
lastModified: number;
}, ctx: SetParams[2]): Promise<void>;
revalidateTag(tagOrTags: RevalidateParams[0]): Promise<void>;
}
declare class CachedHandler implements CacheHandler {
constructor(options: CreateRedisStringsHandlerOptions);
get(...args: Parameters<RedisStringsHandler["get"]>): ReturnType<RedisStringsHandler["get"]>;
set(...args: Parameters<RedisStringsHandler["set"]>): ReturnType<RedisStringsHandler["set"]>;
revalidateTag(...args: Parameters<RedisStringsHandler["revalidateTag"]>): ReturnType<RedisStringsHandler["revalidateTag"]>;
resetRequestCache(...args: Parameters<RedisStringsHandler["resetRequestCache"]>): ReturnType<RedisStringsHandler["resetRequestCache"]>;
}
export { CachedHandler as default };