Cache functions dynamically based on their arguments using cache-manager.
Install the package using npm:
npm install cache-manager-functionor with Yarn:
yarn add cache-manager-functionCall getOrInitializeCache to manually initialize the cache.
const cache = await getOrInitializeCache<RedisStore>({ store: await redisStore({ host: 'localhost', port: 6379, }), });Alternatively, you can initialize the cache implicitly by providing the store directly to cachedFunction.
const multiply = (x, y) => x * y; const cachedMultiply = cachedFunction(multiply, { store: await redisStore({ host: 'localhost', port: 6379, }), }); // Initializes the cache and caches the result await cachedMultiply(2, 3); The selector option specifies which arguments should be used to generate the cache key.
type Person = { name: string; lastname: string }; const greet = (person: Person) => `Hello, ${person.name} ${person.lastname}!`; // Caches based on `person.name` and `person.lastname` const cachedGreet = cachedFunction(greet, { selector: ['0.name', '0.lastname'] }); await cachedGreet({ person: { name: `John`, lastname: `Doe` } }); // Caches the result based on name=John and lastname=Doe await cachedGreet({ person: { name: `Jane`, lastname: `Doe` } }); // Caches the result based on name=Jane and lastname=DoeCacheOptions receives the exact same options that cachedFunction receives. It’s an alternative way to define the cache behavior directly on the function.
import { CacheOptions, cachedFunction } from `cache-manager-function`; class UserService { @CacheOptions(['0'], 300) // Specifies to cache based on the first argument (id), with a TTL of 300ms async getUser(id: number) { return `User with ID: ${id}`; } } const service = new UserService(); const cachedFetchUser = cachedFunction(service.getUser); await userService.getUser(1); // Executes and caches based on the `id` argument await userService.getUser(1); // Returns the cached resultInitializes or retrieves the cache.
-
Parameters:
options(Optional): Configuration options to initialize the cache.
-
Returns: A promise that resolves to the cache instance.
Caches the result of a function based on its arguments.
-
Parameters:
function_: The function to cache.options(Optional): Configuration options for caching.
-
Returns: A cached function that returns a promise with the result.
Decorator to cache function results based on selected arguments.
- Parameters:
selector: Paths of the arguments to include in the cache key.ttl(Optional): Time-to-live for the cached result.