Repository navigation
Document and CI - Validate Valkey Support for Jawn #5753
Description
I tested Jawn’s Redis-backed paths against recent Valkey and found them to work without application code changes in current usage.
The command surface in use (GET, SET EX/PX, INCR, PTTL, PEXPIRE, and Lua via SCRIPT LOAD/EVALSHA) predates the fork and is compatible across Redis and Valkey. Since Jawn uses ioredis, backend selection appears to be configuration-only (REDIS_HOST).
At the moment, I don’t see Valkey mentioned in docs, README, or CI, so support appears to be “works in practice but undocumented/unverified in automation.”
Why this might be valuable
- Self-hosting compatibility: Valkey is a common in-memory store choice across multiple hosting providers.
- Enterprise adoption: Teams that moved away from Redis post-BSL often evaluate compatibility with existing infrastructure early.
- Low-risk scope: Based on the current command usage, this looks like a docs + CI coverage addition with no behavior change for existing Redis users.
Current state
All Redis access goes through one ioredis client: valhalla/jawn/src/lib/clients/redisClient.ts.
Current subsystem usage:
| Subsystem | File | Commands |
|---|---|---|
| KV Cache (L2) | valhalla/jawn/src/lib/cache/kvCache.ts |
GET, SET PX |
| Proxy Rate Limiter | valhalla/jawn/src/lib/proxy/RateLimiter.ts |
GET, SET EX |
| HTTP API Rate Limiter | valhalla/jawn/src/middleware/ratelimitter.ts |
Lua (INCR, PTTL, PEXPIRE) |
| Usage Limit Cache | valhalla/jawn/src/managers/UsageLimitManager.ts |
GET, SET EX |
| Encrypted Key/Auth Cache | valhalla/jawn/src/lib/cache/staticMemCache.ts |
GET, SET EX |
Not currently observed: Pub/Sub, Streams, sorted sets, transactions, or modules.
The Worker uses Cloudflare KV and is out of scope.
Suggested change
- Docs update: Add Valkey as a supported backend in self-hosting docs, including a
REDIS_HOSTexample. - CI job: Add a GitHub Actions workflow that starts
valkey/valkey:8-alpineand runs the Jawn test suite against it.
Suggested acceptance criteria
- Self-hosting docs mention Valkey support with configuration example.
- CI includes a Jawn test job running against Valkey.
- No behavior changes for existing Redis users.
Happy to open a PR if this direction is aligned.
| Subsystem | File | Commands |
|---|---|---|
| KV Cache (L2) | valhalla/jawn/src/lib/cache/kvCache.ts |
GET, SET PX |
| Proxy Rate Limiter | valhalla/jawn/src/lib/proxy/RateLimiter.ts |
GET, SET EX |
| HTTP API Rate Limiter | valhalla/jawn/src/middleware/ratelimitter.ts |
Lua (INCR, PTTL, PEXPIRE) |
| Usage Limit Cache | valhalla/jawn/src/managers/UsageLimitManager.ts |
GET, SET EX |
| Encrypted Key/Auth Cache | valhalla/jawn/src/lib/cache/staticMemCache.ts |
GET, SET EX |
Not currently used: Pub/Sub, Streams, sorted sets, transactions, or modules.
The Worker uses Cloudflare KV exclusively and is out of scope.
Suggested change
- Docs update: Add Valkey as a supported backend in self-hosting docs, including a
REDIS_HOSTconfiguration example. - CI job: Add a GitHub Actions workflow that starts
valkey/valkey:8-alpineand runs the Jawn test suite against it.
Activity
rileydes-improving commentedon Sep 2, 2026
This would be a quick docs change in #5764 if you have some time for review @chitalian