Simple key-value interface for caching, sessions, and ephemeral state.
Interface
interface KV {
get<T>(key: string): Promise<T | undefined>;
set<T>(key: string, value: T, options?: { ttl?: number }): Promise<void>;
delete(key: string): Promise<void>;
has(key: string): Promise<boolean>;
}
ttl is in seconds.
Config
Default (in-memory):
// config/kv.ts
import kv from "primate/kv";
export default kv();
Redis:
// config/kv.ts
import redis from "@primate/redis";
export default redis({
url: "redis://localhost:6379", // optional, this is the default
});
No config file = in-memory by default.
Usage
import kv from "#kv"; // given a tsconfig alias
await kv.set("session:abc", { userId: 123 }, { ttl: 3600 });
const session = await kv.get<{ userId: number }>("session:abc");
if (await kv.has("session:abc")) {
// ...
}
await kv.delete("session:abc");
Drivers
primate/kv — in-memory, development/single-instance. Data lost on restart.
@primate/redis — distributed, production.
Simple key-value interface for caching, sessions, and ephemeral state.
Interface
ttlis in seconds.Config
Default (in-memory):
Redis:
No config file = in-memory by default.
Usage
Drivers
primate/kv — in-memory, development/single-instance. Data lost on restart.
@primate/redis — distributed, production.