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.