kevy

Bring your redis client

kevy's server speaks RESP — the wire protocol every Redis-adjacent ecosystem already has a mature client for. There is no kevy-specific client to install (Rust excepted, below): connect the client you already use, and the full verb surface — including kevy's extensions (IDX.*, VIEW.*, FEED.*) — is reachable through its raw-command channel.

This page is not a hope: clientgate runs in CI on every push. Six clients each execute the same ladder against one kevy server — typed operations across the string / TTL / hash / list / zset families, a pub/sub round trip, and an extended verb through the raw channel.

EcosystemClientRaw channel for IDX.* etc.
Nodenode-redisclient.sendCommand([...])
Nodeioredisclient.call(...)
Gogo-redisclient.Do(ctx, ...)
.NETStackExchange.Redisdb.Execute(...)
Pythonredis-pyclient.execute_command(...)
ChiredisredisCommand(...)

Async comes with the ecosystem: ioredis, go-redis, StackExchange.Redis and redis-py's asyncio face are all async-native — kevy needs no special client for it.

// Node — ioredis
import Redis from "ioredis";
const db = new Redis(6379);
await db.set("k", "v");
await db.call("IDX.CREATE", "idx_age", "ON", "PREFIX", "user:", "FIELD", "age", "TYPE", "i64", "KIND", "range");
// Go — go-redis
c := redis.NewClient(&redis.Options{Addr: "localhost:6379"})
c.Set(ctx, "k", "v", 0)
c.Do(ctx, "IDX.CREATE", "idx_age", "ON", "PREFIX", "user:", "FIELD", "age", "TYPE", "i64", "KIND", "range")
# Python — redis-py
r = redis.Redis()
r.set("k", "v")
r.execute_command("IDX.CREATE", "idx_age", "ON", "PREFIX", "user:", "FIELD", "age", "TYPE", "i64", "KIND", "range")

Rust

Rust gets first-party typed clients, because that is where the typed extension surface lives natively:

  • kevy-client — synchronous, the full wrapped surface (indexes, views, feeds, pipelining, MULTI/EXEC + WATCH).
  • kevy-client-async — the same surface on async I/O.

The smoke sources behind the gate live in bench/clientgate/ — each doubles as a copy-paste connection example for its ecosystem.