This release is a pre-release and may not be stable for production use.
kachedb
High-Performance Python Client for KacheDB — The Zero-Copy Redis-Compatible & LLM KV-Cache Storage Engine
⚡ Installation
pip install kachedb
Installation Extras:
# PyTorch tensor zero-copy support (FP16, BF16, FP32, INT8)
pip install "kachedb[torch]"
# vLLM PagedAttention KV-transfer plugin
pip install "kachedb[vllm]"
# SGLang RadixAttention KV-cache plugin
pip install "kachedb[sglang]"
# Install all plugins & dependencies
pip install "kachedb[all]"
🚀 Quickstart
Synchronous Client
from kachedb import KacheClient
with KacheClient(host="127.0.0.1", port=6379) as client:
# Standard Redis-compatible operations
client.set("user:1", "alice", ex=3600) # SET with 1-hour TTL
print(client.get("user:1")) # b"alice"
# Batch operations
client.set("user:2", "bob")
result = client.mget("user:1", "user:2") # [b"alice", b"bob"]
# Check existence
print(client.exists("user:1")) # 1
# Delete
client.delete("user:1", "user:2")
Async Client
import asyncio
from kachedb import AsyncKacheClient
async def main():
async with AsyncKacheClient(host="127.0.0.1", port=6379) as client:
await client.set("key", "value", ex=60)
result = await client.get("key")
print(result) # b"value"
asyncio.run(main())
Pipeline Batching
from kachedb import KacheClient
with KacheClient() as client:
pipe = client.pipeline()
pipe.set("a", "1")
pipe.set("b", "2")
pipe.set("c", "3")
pipe.get("a")
pipe.get("b")
pipe.get("c")
results = pipe.execute()
# ["OK", "OK", "OK", b"1", b"2", b"3"]
🧠 LLM KV-Cache Acceleration (vLLM & SGLang)
KacheDB serves as a high-speed, zero-copy L1/L2 KV-Cache Tier for AI inference engines, bypassing quadratic transformer attention prefill passes via POSIX shared memory (/dev/shm):
1. 🔌 vLLM PagedAttention Integration
Launch vLLM with the KacheDB KV connector:
vllm serve meta-llama/Meta-Llama-3-8B-Instruct \
--kv-transfer-config '{"kv_connector": "kachedb.vllm.KacheDBConnector", "kv_role": "kv_both"}'
Programmatic Usage:
from kachedb.vllm import KacheDBConnector
connector = KacheDBConnector(rank=0, local_rank=0, block_size=16)
# Restore prefix blocks directly into GPU PagedAttention buffers
matched_states, is_hit = connector.recv_kv_caches_and_hidden_states(
model_executable=model,
model_input=model_input,
kv_caches=gpu_kv_caches,
)
👉 Read the full vLLM Production Integration Guide.
2. 🌳 SGLang RadixAttention Integration
Use KacheDBSGLangConnector to offload and restore dynamic Radix tree branches:
from kachedb.sglang import KacheDBSGLangConnector
connector = KacheDBSGLangConnector(rank=0, local_rank=0, pool_size_mb=2048)
# 1. Offload an evicted Radix tree node (Variable-length token slice)
desc = connector.offload_node(
node_id=node.id,
token_ids=node.token_ids,
k_tensors=node_k_tensors,
v_tensors=node_v_tensors,
parent_hash=parent_hash,
)
# 2. Restore cached prefix subtree directly into target GPU/CPU memory
matched_tokens, is_hit = connector.restore_prefix(
prompt_tokens=incoming_prompt_token_ids,
target_k_buffers=target_k_buffers,
target_v_buffers=target_v_buffers,
)
👉 Read the full SGLang Production Integration Guide.
⚡ Master Proof-of-Speed Benchmarks
Evaluated on Meta-Llama-3-8B Topology (32 Layers, 8 KV Heads, FP16) connected to the live KacheDB storage engine:
| Context Length | KV Cache Size | 🔴 Cold GPU Recompute | 🟢 SGLang + KacheDB | ⚡ Speedup |
|---|---|---|---|---|
| 512 tokens | 64.0 MB | 2,429.8 ms |
7.99 ms |
304.1× ⚡ |
| 1,024 tokens | 128.0 MB | 607.9 ms |
7.17 ms |
84.8× ⚡ |
| 2,048 tokens | 256.0 MB | 1,425.1 ms |
9.61 ms |
148.3× ⚡ |
| 4,096 tokens | 512.0 MB | 3,164.2 ms |
10.14 ms |
312.2× ⚡ |
| 8,192 tokens | 1,024.0 MB | 5,541.6 ms |
9.25 ms |
599.1× ⚡ |
| 16,384 tokens | 2,048.0 MB (2GB) | 26,081.1 ms (26.1s) |
18.71 ms |
1,393.9× ⚡ |
📋 Supported Commands
All commands follow the KacheDB RESP2/RESP3 wire protocol:
| Command | Method | Description |
|---|---|---|
PING |
client.ping() |
Test server liveness |
SET |
client.set(key, value, ex=, px=) |
Store value with optional TTL |
GET |
client.get(key) |
Retrieve value |
MGET |
client.mget(*keys) |
Batch retrieve multiple keys |
DEL |
client.delete(*keys) |
Delete keys |
EXISTS |
client.exists(*keys) |
Count existing keys |
🏗️ Architecture
┌──────────────────────────────────────────────────────────┐
│ Your Python App │
│ (vLLM / SGLang / FastAPI / etc.) │
├──────────────────────────────────────────────────────────┤
│ kachedb Python SDK │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ KacheClient │ │ AsyncKache │ │ Pipeline │ │
│ │ (sync TCP) │ │ Client │ │ Batching │ │
│ └──────┬───────┘ └──────┬───────┘ └───────┬────────┘ │
│ │ │ │ │
│ ┌──────┴─────────────────┴──────────────────┴────────┐ │
│ │ RESP2/RESP3 Protocol Engine │ │
│ │ (64KB buffered encoder + decoder) │ │
│ └──────────────────────┬─────────────────────────────┘ │
│ │ │
│ ┌──────────────────────┴─────────────────────────────┐ │
│ │ ConnectionPool / AsyncConnectionPool │ │
│ │ (Thread-safe / asyncio.Queue, health checks) │ │
│ └──────────────────────┬─────────────────────────────┘ │
├─────────────────────────┼────────────────────────────────┤
│ TCP + /dev/shm │
├──────────────────────────────────────────────────────────┤
│ KacheDB Server (Rust) │
│ io_uring / kqueue │ POSIX SHM │ Megaslab │
└──────────────────────────────────────────────────────────┘
🧪 Development & Quality Gates
# Clone
git clone https://github.com/vubon/kachedb-py.git
cd kachedb-py
# Install in editable dev mode with all extras
pip install -e ".[all,dev]"
# Run full unit test suite (85 tests)
pytest tests/ -v
# Code formatting & linting
ruff check src/ tests/
ruff format --check src/ tests/
# Strict type checking
mypy src/
🔗 Documentation & Guides
- 📘 vLLM Production Integration Guide
- 📗 SGLang Production Integration Guide
- 🏆 Master Proof-of-Speed Benchmarks
- 🦀 KacheDB Rust Server Engine
📄 License
Dual-licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT) at your option.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kachedb-0.1.0a6.tar.gz.
File metadata
- Download URL: kachedb-0.1.0a6.tar.gz
- Upload date:
- Size: 49.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
142ba0ef6663967940fb57dfbb23b4e31e113e7ba9988c31e93de2517fe8bd1f
|
|
| MD5 |
263529b60321d6a4fa5012a681563149
|
|
| BLAKE2b-256 |
48f5150ffaeee0f7f4ef75d3756e1ef58cbd3cc595d2937f94a9aa5db17e7c43
|
Provenance
The following attestation bundles were made for kachedb-0.1.0a6.tar.gz:
Publisher:
publish.yml on vubon/kachedb-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kachedb-0.1.0a6.tar.gz -
Subject digest:
142ba0ef6663967940fb57dfbb23b4e31e113e7ba9988c31e93de2517fe8bd1f - Sigstore transparency entry: 2626648288
- Sigstore integration time:
-
Permalink:
vubon/kachedb-py@566776237623220ba5b890de183c9231254717d5 -
Branch / Tag:
refs/tags/v0.1.0a6 - Owner: https://github.com/vubon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@566776237623220ba5b890de183c9231254717d5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file kachedb-0.1.0a6-py3-none-any.whl.
File metadata
- Download URL: kachedb-0.1.0a6-py3-none-any.whl
- Upload date:
- Size: 42.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
062c0a9502a5f220f2860672b843fe11758c5a248feea7102f7056cb6789af0d
|
|
| MD5 |
ea1f11f495ce8a2ac54a26fcafb01c2f
|
|
| BLAKE2b-256 |
292bbe2ba0c05ca1ff6fb1a2e63f847863aa0f4bac5d3d1eb57e564169398cc2
|
Provenance
The following attestation bundles were made for kachedb-0.1.0a6-py3-none-any.whl:
Publisher:
publish.yml on vubon/kachedb-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kachedb-0.1.0a6-py3-none-any.whl -
Subject digest:
062c0a9502a5f220f2860672b843fe11758c5a248feea7102f7056cb6789af0d - Sigstore transparency entry: 2626648311
- Sigstore integration time:
-
Permalink:
vubon/kachedb-py@566776237623220ba5b890de183c9231254717d5 -
Branch / Tag:
refs/tags/v0.1.0a6 - Owner: https://github.com/vubon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@566776237623220ba5b890de183c9231254717d5 -
Trigger Event:
release
-
Statement type: