Protocols overview¶
fastcached speaks five wire protocols off the same storage engine — four compatible with existing clients, plus one of its own:
| Protocol | Reference | Status |
|---|---|---|
| memcached (text) | memcached protocol.txt | Full |
| memcached (binary) | memcached protocol_binary.xml | Full |
| memcached (meta) | memcached protocol.txt §meta | Full |
| Redis (RESP2 + RESP3) | Redis Serialization Protocol | Key-value subset, plus sets, streams, pub/sub and transactions |
Compile cache (0xFC) |
Compile cache | fastcached's own |
The compile cache is deliberately unlike the other four: they move opaque bytes, while it understands that a value is a compile result and rewrites the paths inside it. It is also the only one that is versioned, so it is excluded from the capability matrix below — see its own page for the framing, statuses, and error codes.
Each connection is routed to one handler based on its first bytes — see Autodetection for the exact rules. A given client speaks one protocol; mixing on a single connection is not supported.
At a glance¶
Each row is a logical capability area; cells show how complete each protocol is in fastcached today.
| Capability area | memcached text | memcached binary | memcached meta | Redis RESP |
|---|---|---|---|---|
| Storage (set/add/replace/append/prepend) | Full | Full | Full | Partial (SET/SETEX/PSETEX/MSET) |
| CAS | Full | Full | Full | Via WATCH + MULTI |
| Retrieval (get / gets) | Full | Full | Full | Full |
| TTL refresh (touch / GAT) | Full | Full | Full | Partial (EXPIRE family; no read-and-touch) |
| TTL query | Via me |
n/a | Via me |
Full (TTL / PTTL) |
| Arithmetic (incr / decr) | Full | Full | Full | Full (plus INCRBYFLOAT) |
| Deletion | Full | Full | Full | Full |
| Flush | Full | Full | n/a | Full |
| Stats | Sub-commands | Basic | Via me |
INFO only |
| Slabs / LRU tuning | Synthetic stub | n/a | n/a | n/a |
watch event streaming |
Not supported | n/a | n/a | n/a |
| Authentication | n/a | SASL rejected | n/a | Full (AUTH vs --requirepass) |
| Multiple databases | n/a | n/a | n/a | Single keyspace |
| Pub / sub | n/a | n/a | n/a | Full, plus keyspace notifications |
| Sets | n/a | n/a | n/a | Partial (7 verbs; no set algebra) |
| Streams | n/a | n/a | n/a | Full enough for consumer groups |
| Transactions | n/a | n/a | n/a | Full (MULTI / EXEC / WATCH) |
| Key enumeration | Not supported | n/a | n/a | Not supported |
| Scripting (EVAL) | n/a | n/a | n/a | Not supported |
Legend: Full = full spec coverage · Partial = subset · n/a = not part of that protocol · Not supported = not implemented in fastcached.
The next page, the Coverage matrix, maps each logical operation to the specific command, opcode, or meta-flag in every protocol.
Per-protocol pages¶
- memcached text — framing, exptime semantics, error tokens.
- memcached binary — header layout, status codes, quiet variants.
- memcached meta — meta-flag conventions.
- Meta flags reference — every single-letter
flag across
mg,ms,md,ma. - Binary opcodes — hex table.
- Binary status codes — every status code fastcached emits.
- Redis RESP — supported subset and rationale.
Compatibility¶
See Compatibility with upstream for a per-protocol completeness scorecard.