$ kivo

Open source Redis-compatible in-memory data store in Go

A fast, lightweight, self-hosted drop-in for Redis. Great as an app cache or session store.

What is kivo?

โšก

Redis Protocol Compatible

Drop-in replacement for Redis. Works with redis-cli, go-redis, ioredis, and every Redis client library. RESP2 protocol with pipelining support.

๐Ÿ”ง

Simple & Hackable

Small, clean Go codebase. Easy to understand, easy to extend. One goroutine per connection with a single-threaded store.

๐Ÿ›ก๏ธ

Reliable Persistence

AOF persistence with configurable sync strategies. Graceful shutdown. Lazy + active expiration. Memory limits with safety checks.

๐Ÿ“ˆ

Built to Grow

Single-node and reliable today. Foundation for distributed sharding, clustering, and replication tomorrow.

Run with Docker

Pull the public image from GitHub Container Registry:

docker pull ghcr.io/itsmunim/kivo:latest
docker run -p 6379:6379 ghcr.io/itsmunim/kivo:latest

Connect with any Redis client:

redis-cli -p 6379 PING
# PONG

Deploy on Kubernetes

A 1-replica StatefulSet with an attached PVC โ€” the AOF survives pod restarts. One command:

kubectl apply -f https://raw.githubusercontent.com/itsmunim/kivo/main/k8s/kivo-deploy.yaml
Note: the default manifest uses your cluster's default StorageClass, which on many clusters is node-local (hostPath). That is fine for testing, but data is lost if the node is deleted or crashes. For durable persistence, download k8s/kivo-deploy.yaml, set storageClassName to detachable network storage (AWS EBS gp2, GCE PD standard, Azure Disk managed-csi, Longhorn...), then apply your copy.

No redis-cli? No problem.

kivo ships with an embedded web console. Browse every key with its type and TTL, and run any supported Redis command live in a browser terminal โ€” no redis-cli, no client library, nothing to install. Start kivo and it is there at http://localhost:3001.

Frequently Asked Questions

What is kivo?

kivo is an open source, self-hosted in-memory data store written in Go that speaks the Redis protocol. Point any Redis client at it and it works like a lightweight Redis server.

Is kivo a drop-in compatibility for Redis?

For the v1 command surface โ€” strings, lists, sets, hashes, sorted sets, keys, expiration, and connection commands โ€” yes. Clients such as redis-cli, go-redis, and ioredis connect without code changes.

Does kivo persist data across restarts?

Yes. kivo supports AOF (append-only file) persistence with configurable sync strategies โ€” always, everysec, or no. Data is replayed on startup, and graceful shutdown flushes buffered writes to disk.

Can I run kivo in Docker or Kubernetes?

Yes. A public image is published to GitHub Container Registry (ghcr.io/itsmunim/kivo), and a ready-made StatefulSet manifest with a PVC-backed AOF is provided under k8s/ in the repository.

When should I use kivo?

If your use case fits the single-node, Redis-compatible surface โ€” an app cache, session store, rate limiter, task queue, or leaderboard โ€” feel free to use it for MVPs or production workloads. It's MIT licensed. See the benchmarks below: on identical hardware kivo runs on par with Redis standalone, and ahead on several operations โ€” so you can rely on it with peace of mind as a single node.

Supported Commands

Strings

GET SET MGET MSET INCR DECR APPEND STRLEN

Lists

LPUSH RPUSH LPOP RPOP LRANGE LLEN LINDEX LREM LTRIM

Sets

SADD SREM SMEMBERS SISMEMBER SCARD SPOP SUNION SINTER SDIFF

Hashes

HSET HGET HGETALL HDEL HLEN HEXISTS HKEYS HVALS HMGET

Sorted Sets

ZADD ZREM ZRANGE ZREVRANGE ZRANGEBYSCORE ZCARD ZSCORE ZINCRBY ZCOUNT

Keys & Server

KEYS FLUSHDB DBSIZE TYPE EXPIRE TTL PING ECHO

Benchmarks

redis-benchmark, 100,000 requests, 50 parallel clients. Both measured on the same machine (Apple M1 Pro) โ€” kivo vs real Redis 8.10.1, back to back with identical commands. Full raw output in BENCHMARKS.md.

Commandkivo (ops/sec)Redis (ops/sec)verdict
PING83,70181,638kivo +3%
SET83,21778,526kivo +6%
GET84,70384,934parity
INCR84,20776,393kivo +10%
LPUSH77,38678,304parity
RPUSH83,36276,463kivo +9%
LPOP81,41678,297kivo +4%
RPOP84,34581,218kivo +4%
SADD83,82084,865parity
HSET84,11888,549Redis +5%
SET pipelined ร—161,123,595787,402kivo +43%
GET pipelined ร—161,226,994956,938kivo +28%
Same machine, same commands. kivo matches or beats Redis on 11 of 12 benchmarks โ€” including 28โ€“43% faster pipelined throughput. LPUSH went from 4,196 to 77,386 ops/sec (18x) after moving lists to a ring-buffer deque.