Skip to main content

RESP2/RESP3 and Valkey compatibility

The RESP gateway listens on 127.0.0.1:6380 by default and supports RESP2 and RESP3 framing. Existing redis-cli, valkey-cli, and many RESP clients can connect without an SDK.

redis-cli -h 127.0.0.1 -p 6380 PING
redis-cli -p 6380 SET session:1 active EX 60
redis-cli -p 6380 GET session:1

Enable RYME_RESP_PASSWORD for password authentication. Use the dedicated resp_tls_listen listener with TLS rather than exposing plaintext RESP.

Implemented command families​

FamilyCommands and behavior
Strings/keysGET, SET, SETNX, GETSET, GETEX, GETDEL, MGET, MSET, APPEND, STRLEN, DEL, EXISTS, TYPE
ExpiryEXPIRE, PEXPIRE, EXPIREAT, PEXPIREAT, TTL, PTTL, PERSIST
CountersINCR, DECR, INCRBY, DECRBY, INCRBYFLOAT
HashesHSET, HGET, HDEL, HEXISTS, HLEN, HGETALL, HKEYS, HVALS
ListsLPUSH, RPUSH, LPOP, RPOP, LLEN, LRANGE, BLPOP, BRPOP, BLMOVE
SetsSADD, SREM, SMEMBERS, SCARD, SISMEMBER
Sorted setsZADD, ZSCORE, ZRANK, ZREVRANK, ZRANGE, ZREM, ZCARD, ZCOUNT, ZINCRBY
StreamsXADD, XRANGE, XREVRANGE, XLEN, XTRIM, XREAD, XDEL, XGROUP, XREADGROUP, XACK, XPENDING, XAUTOCLAIM, XINFO
ScriptingSandboxed Lua 5.4: EVAL, EVALSHA, SCRIPT LOAD, SCRIPT EXISTS, SCRIPT FLUSH, PCALL
TransactionsMULTI, EXEC, DISCARD; staged writes commit atomically
Pub/subSUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB
OtherSCAN, KEYS, HyperLogLog, geospatial commands

The exact compatibility suite is in crates/ryme-wire-resp/tests/. Unsupported option combinations should be treated as errors, not silently assumed to have Redis semantics.

Transaction notes​

Commands inside MULTI execute against one transaction. Blocking list and stream reads wake on commits and take a fresh transaction for each check. Sorted sets use score ordering with lexicographic member tie-breaks. Stream consumer groups and pending entries are persisted with the stream document.

RESP writes publish to the same tenant-scoped CDC path as SQL and REST writes; the realtime page explains how to consume them.