@healthzkit/redis
v0.0.7
Published
Redis health-check adapters for healthzkit (ioredis, node-redis, and Upstash).
Maintainers
Readme
@healthzkit/redis
Redis health adapters for healthzkit. Each adapter implements HealthAdapter by running a lightweight command (default PING) and returning latency in metadata.
Install the Redis client you use as a peer dependency; only that adapter’s subpath needs to be imported.
Install
npm install healthzkit @healthzkit/redisPick one client (peer dependency):
npm install ioredis # for @healthzkit/redis/ioredis
npm install redis # for @healthzkit/redis/redis
npm install @upstash/redis # for @healthzkit/redis/upstashThe package is ESM-only ("type": "module").
Quick start
import { createHealthKit } from "healthzkit";
import { ioredisAdapter } from "@healthzkit/redis/ioredis";
const kit = createHealthKit({
checks: [
{
name: "redis",
type: ["readiness"],
adapter: ioredisAdapter({
connectionString: process.env.REDIS_URL!,
}),
},
],
});Use a subpath import so unused clients are not pulled in:
| Client | Import | Adapter |
| ---------------------------------------------------------- | --------------------------- | ------------------ |
| ioredis | @healthzkit/redis/ioredis | ioredisAdapter |
| node-redis | @healthzkit/redis/redis | nodeRedisAdapter |
| @upstash/redis | @healthzkit/redis/upstash | upstashAdapter |
All adapters are also re-exported from @healthzkit/redis if you depend on multiple clients.
Adapters
ioredis
import { ioredisAdapter } from "@healthzkit/redis/ioredis";
import Redis from "ioredis";
// Connection string (creates and reuses an internal client)
ioredisAdapter({ connectionString: "redis://localhost:6379" });
// Existing client
ioredisAdapter({ client: new Redis(process.env.REDIS_URL!) });The command string is trimmed, split on whitespace, and passed to ioredis client.call(command, ...args) (default call("PING"); custom example "ECHO hello" → call("ECHO", "hello")). Repeated whitespace is ignored. Empty commands fail the check. Quoted arguments are not parsed.
node-redis
import { nodeRedisAdapter } from "@healthzkit/redis/redis";
import { createClient } from "redis";
nodeRedisAdapter({ connectionString: "redis://localhost:6379" });
const client = createClient({ url: process.env.REDIS_URL });
await client.connect();
nodeRedisAdapter({ client });Upstash
import { upstashAdapter } from "@healthzkit/redis/upstash";
import { Redis } from "@upstash/redis";
upstashAdapter({
url: process.env.UPSTASH_REDIS_REST_URL!,
token: process.env.UPSTASH_REDIS_REST_TOKEN!,
});
upstashAdapter({ client: Redis.fromEnv() });Options
Shared options on every adapter:
command— Command to run. Default"PING". For node-redis this is split on spaces and passed tosendCommand(e.g."ECHO x"). For Upstash, non-PINGcommands useexecwith parsed tokens.metadata— Optional(client) => Promise<Record<string, unknown>>. Merged into the check result withlatencyMs.
Connection options (mutually exclusive per adapter):
| Adapter | Create from credentials | Use existing client |
| ---------- | ----------------------------------- | ------------------- |
| ioredis | connectionString, redisOptions? | client |
| node-redis | connectionString, redisOptions? | client |
| Upstash | url, token | client |
Check result
On success:
{
"status": "ok",
"metadata": { "latencyMs": 12 }
}On failure, status is "fail" and error is set (see healthzkit for how that rolls up into probe responses).
Development (this repo)
From the package directory:
vp install
vp test
vp packSee the repo root AGENTS.md for Vite+ / vp conventions.
