Coverage matrix
This is the canonical map of logical operations to wire commands. Each
row describes one thing a client can ask the server to do; each
column shows how that operation is expressed in a given protocol.
| Cell value |
Meaning |
name |
Concrete command, opcode, or meta form (clickable) |
| – |
Not applicable to this protocol |
| stub |
Recognised but returns synthetic output (no real backing) |
| no |
Not implemented; the command is rejected or ignored |
| Operation |
memcached text |
memcached binary |
memcached meta |
Redis RESP2 |
| Store value unconditionally |
set |
0x01 SET / 0x11 SETQ |
ms M=S |
SET |
| Store only if absent |
add |
0x02 ADD / 0x12 ADDQ |
ms M=E |
SET NX |
| Store only if present |
replace |
0x03 REPLACE / 0x13 REPLACEQ |
ms M=R |
SET XX |
| Append to existing value |
append |
0x0e APPEND / 0x19 APPENDQ |
ms M=A |
no |
| Prepend to existing value |
prepend |
0x0f PREPEND / 0x1a PREPENDQ |
ms M=P |
no |
| Compare-and-swap |
cas |
via CAS field in header |
ms C(token) |
– |
| Fetch by key |
get |
0x00 GET / 0x09 GETQ / 0x0c GETK / 0x0d GETKQ |
mg v |
GET |
| Fetch with CAS |
gets |
implicit (CAS in header) |
mg c v |
– |
| Fetch and refresh TTL |
gat / gats |
0x1d GAT / 0x1e GATQ / 0x23 GATK / 0x24 GATKQ |
mg v T(token) |
no |
| Refresh TTL without reading value |
touch |
0x1c TOUCH |
mg T(token) |
no |
| Increment numeric value |
incr |
0x05 INCREMENT / 0x15 INCREMENTQ |
ma M=I |
no |
| Decrement numeric value |
decr |
0x06 DECREMENT / 0x16 DECREMENTQ |
ma M=D |
no |
| Auto-vivify on miss |
– |
0x05/0x06 with exptime!=0xFFFFFFFF |
mg N(token) / ma N J |
– |
| Delete key |
delete |
0x04 DELETE / 0x14 DELETEQ |
md |
DEL / UNLINK |
| Mark stale (recache coordination) |
– |
– |
md I / ms I |
– |
| Drop all entries |
flush_all |
0x08 FLUSH / 0x18 FLUSHQ |
– |
FLUSHDB / FLUSHALL |
| Check key existence |
implicit via get |
implicit via 0x00 |
mg h |
EXISTS |
| Server version |
version |
0x0b VERSION |
– |
inside INFO |
| Server stats |
stats + sub-commands |
0x10 STAT |
per-entry via me |
INFO |
| Set memory limit at runtime |
cache_memlimit |
– |
– |
– |
| Verbosity dial |
verbosity (no-op) |
0x1b VERBOSITY (no-op) |
– |
– |
| Close connection |
quit |
0x07 QUIT / 0x17 QUITQ |
– |
QUIT |
| Heartbeat |
– |
0x0a NOOP |
mn |
PING |
| Pipeline sync barrier |
– |
– |
mn |
– |
| Slab rebalance |
stub (slabs) |
– |
– |
– |
| LRU tuning |
stub (lru) |
– |
– |
– |
| LRU crawler control |
stub (lru_crawler) |
– |
– |
– |
| Event watch streaming |
no |
– |
– |
– |
| Authentication |
– |
SASL rejected |
– |
AUTH rejected |
| Echo |
– |
– |
– |
ECHO |
| Server handshake |
– |
– |
– |
HELLO |
| Command introspection |
– |
– |
– |
COMMAND (empty array) |
| Select database |
– |
– |
– |
SELECT accepted (no-op, single keyspace) |
| Client connection setup |
– |
– |
– |
CLIENT stub |
| Runtime config probe |
– |
– |
– |
CONFIG stub |
| Pub / sub |
– |
– |
– |
no |
| Scripting (EVAL) |
– |
– |
– |
no |
| Streams / sorted sets / hashes |
– |
– |
– |
no |
Reading the matrix
- A row marked no in every column is an operation fastcached does
not support in any protocol.
- A cell marked – means the protocol doesn't have a way to express the
operation, so the absence is not a fastcached limitation.
- "stub" cells return well-shaped responses (
OK) so capability-probing
clients don't error out, but no underlying state is changed. See the
linked command page for each stub's exact behavior.