Hanzo KV
In-memory key-value store
Values live in memory, so a read is a network hop and a hash lookup — nothing waits on a disk. KV speaks RESP2 and RESP3 on port 6379, so the client library you already have connects to it. Reach for it for caches, sessions, rate limits, job queues and leaderboards.
Pick a structure, not a schema
A leaderboard is a sorted set. A rate limit is a counter with an expiry. A queue is a list.
Nothing touches a disk
Reads and writes are answered out of memory, so the time you spend is the network and a hash lookup. That is the whole reason to put a cache in front of a database.
The structures do the work
Strings, hashes, lists, sets, sorted sets, streams, bitmaps, HyperLogLog and geospatial indexes — each with the commands that make sense for it. Lua scripts run several commands as one atomic step when a single command is not enough.
Pub/Sub
Publish to a channel and every subscriber has it, including subscribers matching a pattern like orders.*. Keyspace notifications turn a key expiring into a message something else can act on.
Keys that expire
Put a TTL on any key and it goes away by itself. When memory fills, you choose what leaves first — least recently used, least frequently used, shortest time to live, or only keys that already carry an expiry.
Two ways to survive a restart
An RDB snapshot writes the whole dataset on an interval; the append-only file records every write as it happens. Run either or both, and check a file before you trust it with kv-check-rdb and kv-check-aof.
ACLs on commands and keys
A user is granted specific commands and specific key patterns, so the service that only reads cache keys cannot reach FLUSHALL. TLS on the wire.
Any RESP client connects
import Redis from "ioredis"
const kv = new Redis("redis://kv.hanzo.ai:6379")
// Caching
await kv.set("user:123", JSON.stringify(user), "EX", 3600)
const cached = await kv.get("user:123")
// Rate limiting
const count = await kv.incr("ratelimit:api:usr_123")
await kv.expire("ratelimit:api:usr_123", 60)
// Pub/Sub
kv.subscribe("events")
kv.on("message", (channel, message) => {
console.log(channel, message)
})Up to 5% of compute goes back to open source
Every deployment is SBOM-verified. Contributors to Valkey earn a share of compute revenue — transparent, on-chain, and customizable by the community.
Up to 5% of compute goes back to OSS authors
Every Hanzo deployment tracks software dependencies via SBOM. When your code powers compute on Hanzo, the authors get paid — automatically.
Put it in front of the database
Free tier includes 256 MB. Provision in seconds.