Skip to main content

CacheResolver

The CacheResolver class provides a flexible way to configure and switch between different cache adapters at runtime.

Initial configuration​

To begin using the CacheResolver, you will need to register all required adapters during initialization.

./samples/cache-resolver-initial-config.ts
import { CacheResolver } from "eridu-tech/cache";
import { MemoryCacheAdapter } from "eridu-tech/cache/memory-cache-adapter";
import { RedisCacheAdapter } from "eridu-tech/cache/redis-cache-adapter";
import { SuperJsonSerde } from "eridu-tech/serde/super-json-serde";
import { Redis } from "ioredis";

type User = {
name: string;
age: number;
};

const serde = new SuperJsonSerde();
export const cacheResolver = new CacheResolver<"memory" | "redis", User>({
adapters: {
memory: new MemoryCacheAdapter(),
redis: new RedisCacheAdapter({
database: new Redis("YOUR_REDIS_CONNECTION"),
serde,
}),
},
// You can set an optional default adapter
defaultAdapter: "memory",
});

await cacheResolver.init();

Usage​

1. Using the default adapter​

./samples/cache-resolver-default-adapter.ts
import { cacheResolver } from "./cache-resolver-initial-config.js";

await cacheResolver.use().add("user/jose@gmail.com", {
name: "Jose",
age: 20,
});
danger

Note that if you dont set a default adapter, an error will be thrown.

2. Specifying an adapter explicitly​

./samples/cache-resolver-specific-adapter.ts
import { cacheResolver } from "./cache-resolver-initial-config.js";

await cacheResolver.use("redis").add("user/jose@gmail.com", {
name: "Jose",
age: 20,
});
danger

Note that if you specify a non-existent adapter, an error will be thrown.

Further information​

For further information refer to eridu-tech/cache API docs.