ember-protocol
RESP3 wire protocol implementation for ember. handles zero-copy parsing, direct-to-buffer serialization, and typed command dispatch.
what's in here
- parse — zero-copy RESP3 frame parser that works directly on byte slices, returning
(Frame, bytes_consumed)for pipelining support - serialize — writes frames directly into
BytesMutwith no intermediate allocations - command — converts raw frames into typed
Commandenums with argument validation, arity checks, and flag parsing - types —
Frameenum:Simple,Error,Integer,Bulk,Null,Array,Map
quick start
use ;
use ;
// parse a RESP3 frame from raw bytes
let input = b"+OK\r\n";
let = parse_frame.unwrap.unwrap;
assert_eq!;
// serialize a frame back to bytes
let mut buf = new;
frame.serialize;
assert_eq!;
// parse a command from an array frame
let frame = Array;
let cmd = from_frame.unwrap;
supported commands
strings: GET, SET (with NX/XX/EX/PX), INCR, DECR, INCRBY, DECRBY, INCRBYFLOAT, APPEND, STRLEN, MGET, MSET, COPY
lists: LPUSH, RPUSH, LPOP, RPOP, LRANGE, LLEN, BLPOP, BRPOP
sorted sets: ZADD (with NX/XX/GT/LT/CH flags), ZREM, ZSCORE, ZRANK, ZRANGE (with WITHSCORES), ZCARD, ZSCAN
hashes: HSET, HGET, HGETALL, HDEL, HEXISTS, HLEN, HINCRBY, HKEYS, HVALS, HMGET, HSCAN
sets: SADD, SREM, SMEMBERS, SISMEMBER, SCARD, SSCAN
keys: DEL, UNLINK, EXISTS, EXPIRE, PEXPIRE, TTL, PTTL, PERSIST, TYPE, RENAME, SCAN, KEYS, OBJECT ENCODING, OBJECT REFCOUNT
server: PING, ECHO, DBSIZE, INFO, BGSAVE, BGREWRITEAOF, FLUSHDB, AUTH, QUIT, MONITOR, CONFIG GET, CONFIG SET, CONFIG REWRITE, SLOWLOG GET, SLOWLOG LEN, SLOWLOG RESET, CLIENT ID, CLIENT SETNAME, CLIENT GETNAME, CLIENT LIST, TIME, LASTSAVE, ROLE
transactions: MULTI, EXEC, DISCARD, WATCH, UNWATCH
pub/sub: SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB CHANNELS, PUBSUB NUMSUB, PUBSUB NUMPAT
acl: ACL WHOAMI, ACL LIST, ACL USERS, ACL GETUSER, ACL DELUSER, ACL SETUSER, ACL CAT
cluster: CLUSTER INFO, NODES, SLOTS, KEYSLOT, MYID, MEET, ADDSLOTS, ADDSLOTSRANGE, DELSLOTS, SETSLOT, FORGET, REPLICATE, FAILOVER, COUNTKEYSINSLOT, GETKEYSINSLOT, MIGRATE, RESTORE, ASKING
related crates
| crate | what it does |
|---|---|
| emberkv-core | storage engine, keyspace, sharding |
| ember-persistence | AOF, snapshots, and crash recovery |
| ember-server | TCP server and connection handling |
| ember-cluster | distributed coordination |
| ember-cli | interactive CLI client (REPL, cluster subcommands, benchmark) |