Skip to main content
Pre-release

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

PyPI Version Python Versions CI License


⚡ 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


📄 License

Dual-licensed under either of:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kachedb-0.1.0a4.tar.gz (42.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kachedb-0.1.0a4-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

File details

Details for the file kachedb-0.1.0a4.tar.gz.

File metadata

  • Download URL: kachedb-0.1.0a4.tar.gz
  • Upload date:
  • Size: 42.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kachedb-0.1.0a4.tar.gz
Algorithm Hash digest
SHA256 7d2f83bb144da50626dee1366e6a25de538931e6100f8f466de77e4d5bd545e6
MD5 e5b033c2084b9d519f2f6355e2fcde1e
BLAKE2b-256 209f68addbbbbf278b02a3ea5c6697d2b7ce678b7df53f3653078eb515fda3ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for kachedb-0.1.0a4.tar.gz:

Publisher: publish.yml on vubon/kachedb-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kachedb-0.1.0a4-py3-none-any.whl.

File metadata

  • Download URL: kachedb-0.1.0a4-py3-none-any.whl
  • Upload date:
  • Size: 36.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kachedb-0.1.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 8fb7540bbbe0109ba3b6ff6572deaa5593a3d7bab8b6c946cfa7dbfad9fd0d62
MD5 58247bdfdf4b3e934b3a77151c83852b
BLAKE2b-256 874e311a106836fb981096973abf50de91f8f31aee4c658a7d1a51b8c5cf4e03

See more details on using hashes here.

Provenance

The following attestation bundles were made for kachedb-0.1.0a4-py3-none-any.whl:

Publisher: publish.yml on vubon/kachedb-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0a4 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page