Command coverage: standard Redis commands unimplemented (INCRBYFLOAT, PERSIST, ZADD, set-algebra, …) #42

Open
opened 2026-06-10 12:49:39 +00:00 by sameh-farouk · 0 comments
Member

Summary

A range of standard Redis commands return unknown command. All confirmed present in redis 7.0.15 and absent from the hero_db dispatch (crates/hero_db/src/server.rs, single match cmd.as_str()).

Strings

INCRBYFLOAT, SETRANGE, GETDEL, GETEX, PSETEX (impl exists as string.rs::psetex but is not wired into dispatch)

Lists

LINSERT, LTRIM, RPOPLPUSH, LPOS, BLPOP, BRPOP

Sets

SRANDMEMBER, SMOVE, SINTERCARD, SMISMEMBER, SINTERSTORE, SUNIONSTORE, SDIFFSTORE

Hashes

HINCRBYFLOAT, HRANDFIELD

Sorted sets

ZADD and the entire Z* family — no sorted-set type exists

Generic / keys

OBJECT (top-level; only DEBUG OBJECT exists, server.rs:1555), COPY, PERSIST, EXPIREAT, PEXPIRE, PEXPIREAT, EXPIRETIME, PEXPIRETIME

Connection / transactions

ECHO, AUTH, MULTI / EXEC / WATCH

Suggested triage

  1. Trivial wrappers/aliases: ECHO, PERSIST, EXPIREAT, GETDEL, wire up existing PSETEX.
  2. Set algebra store/card variants.
  3. Sorted-set type (large, new type).
  4. Transactions / blocking ops (large, semantics-heavy).

Scope was the data-type + keyspace + expire + scan command families; pub/sub, scripting, and cluster were out of scope and are separately known-unsupported.


Filed from a Redis-compatibility audit (hero_db v0.6.0 @ main aacaad1). Every finding was cross-validated: the same probe passes on stock redis-server 7.0.15 and fails on hero_db, using the Apache Kvrocks gocase suite (Go) and a redis-py 8.0 probe (Python). Root causes verified against the source.

## Summary A range of standard Redis commands return `unknown command`. All confirmed present in redis 7.0.15 and absent from the hero_db dispatch (`crates/hero_db/src/server.rs`, single `match cmd.as_str()`). ### Strings `INCRBYFLOAT`, `SETRANGE`, `GETDEL`, `GETEX`, `PSETEX` *(impl exists as `string.rs::psetex` but is not wired into dispatch)* ### Lists `LINSERT`, `LTRIM`, `RPOPLPUSH`, `LPOS`, `BLPOP`, `BRPOP` ### Sets `SRANDMEMBER`, `SMOVE`, `SINTERCARD`, `SMISMEMBER`, `SINTERSTORE`, `SUNIONSTORE`, `SDIFFSTORE` ### Hashes `HINCRBYFLOAT`, `HRANDFIELD` ### Sorted sets `ZADD` and the entire `Z*` family — no sorted-set type exists ### Generic / keys `OBJECT` *(top-level; only `DEBUG OBJECT` exists, `server.rs:1555`)*, `COPY`, `PERSIST`, `EXPIREAT`, `PEXPIRE`, `PEXPIREAT`, `EXPIRETIME`, `PEXPIRETIME` ### Connection / transactions `ECHO`, `AUTH`, `MULTI` / `EXEC` / `WATCH` ## Suggested triage 1. **Trivial** wrappers/aliases: `ECHO`, `PERSIST`, `EXPIREAT`, `GETDEL`, wire up existing `PSETEX`. 2. **Set algebra** store/card variants. 3. **Sorted-set type** (large, new type). 4. **Transactions / blocking ops** (large, semantics-heavy). Scope was the data-type + keyspace + expire + scan command families; pub/sub, scripting, and cluster were out of scope and are separately known-unsupported. --- *Filed from a Redis-compatibility audit (hero_db v0.6.0 @ main `aacaad1`). Every finding was cross-validated: the same probe **passes on stock `redis-server 7.0.15`** and **fails on hero_db**, using the Apache Kvrocks `gocase` suite (Go) and a `redis-py 8.0` probe (Python). Root causes verified against the source.*
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_db#42
No description provided.