Known limitations¶
A single page enumerating everything fastcached does not currently do, so a reader evaluating the project can see the gaps in one place.
Protocol gaps¶
watch(memcached text): streaming event subscription is not implemented. Recognised commands returnOKrather than starting the stream.- SASL authentication (memcached binary): the PLAIN mechanism is
implemented and authenticates against the
--requirepasssecret. When no secret is configured the opcodes replyAuthError(as before), so non-authing clients fall back to the plain path. Other mechanisms (CRAM-MD5, SCRAM) are not supported. shutdown(memcached text): not implemented. Stop the daemon via the OS (Ctrl-C,SIGTERM, systemd, Windows service control).stats conns(memcached text): returns an empty result. fastcached does not track an active-connection registry.stats sizes(memcached text): returns a single approximate bucket because the storage engine does not track per-entry sizes bucketed by size class.AUTH(Redis): supported when--requirepassis set (single shared secret, redis-style); with no secret configured it replies the redis-compatible "no password is set" error. Per-user ACLs beyond the single optional--auth-usernameare not supported.HELLO 3(Redis): rejected with-NOPROTO. RESP3 is not supported.SELECT db(Redis): accepted as a no-op for any index — the reply is always+OK, but fastcached is a single flat keyspace, so the index is ignored rather than selecting a distinct database.
Storage model differences from memcached¶
- No slab allocator. fastcached uses a flat LRU.
slabs *,lru *, andlru_crawler *commands are recognised as synthetic stubs and returnOKwithout changing state. stats items,stats slabs,stats sizestherefore return synthetic output describing a single virtual class rather than real per-class breakdowns.
Storage model differences from Redis¶
- No data-structure commands (lists, sets, hashes, sorted sets, streams, bitfields). fastcached's engine is key-value only.
- No pub/sub, scripting (EVAL), or transactions (MULTI/EXEC).
- No replication or cluster commands.
Operational gaps¶
- No live event subscription (
watch). Observability is via thestatssnapshot and, when--metricsis set, a Prometheus/metricsendpoint (plus a/healthzliveness probe) served on a dedicated HTTP port. - TLS termination is opt-in and only present in builds compiled with
-DFASTCACHED_ENABLE_TLS=ON(links OpenSSL). Enable at runtime with--tls --tls-cert <pem> --tls-key <pem>. The default build links no OpenSSL and--tlsthen exits with a clear error; run behind a TLS-terminating proxy in that case. Client-certificate (mutual TLS) authentication is not yet implemented.
See also Compatibility with upstream for a per-protocol completeness scorecard.