$ 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

Both kivo and a real Redis (redis:7-alpine) run as containers on the same Linux/arm64 Docker host, driven by identical redis-benchmark commands (300K requests, 50 parallel clients). CPU and memory sampled with docker stats during the runs; average of 3 rounds. BENCHMARKS.md tells the full progression story.

Operationkivo (ops/sec)Redis (ops/sec)gap
GET130,300134,200โˆ’3%
INCR125,100139,800โˆ’11%
LPUSH126,200127,700โˆ’1%
RPUSH129,900128,200+1%
SET116,700129,200โˆ’10%
Avg CPU116.7%54.2%2.2x
Peak memory57.6 MiB17.7 MiB3.3x
Same host, same commands. kivo runs within 1โ€“11% of Redis throughput on all core ops (RPUSH ahead), on real Linux containers. LPUSH went from 4,196 โ†’ 126,200 ops/sec after moving lists to a ring-buffer deque. The benchmark notes cover the full progression.