About
Limitations
Klyro is version 0.1.1. Review these operational and compatibility limits before using it for important workloads.
Anyone who can reach the port has full access to the keyspace. Bind to a trusted network, keep the port off the public internet, and leave the password option unset in your client.
Missing commands
Klyro implements the 145 commands in this documentation. Calls to other commands return ERR unknown command. Notable absences include:
| Area | Status |
|---|---|
| Scripting (EVAL) | Not implemented |
| Streams, Bitmaps, HyperLogLog, Geo | Not implemented |
| ZUNIONSTORE/ZINTERSTORE, lexicographic ranges, ZADD flags | Not implemented |
| Sharded pub/sub and keyspace notifications | Not implemented |
Transactions, standard pub/sub, and blocking queue commands are implemented. Client libraries still expose many Redis commands that Klyro does not support, so use the documented command reference as the compatibility boundary.
Retrieval
- No built-in embedder. Memory indexes do not embed text; the client supplies the vector.
- Exact vector search only. Scoring is a brute-force scan capped by
mem-max-scan, because the server is single-threaded and an unbounded scan would stall every other client. An approximate index is planned. - Metadata uses flat string fields. Values that parse as numbers compare numerically; other values compare as bytes. Nested objects and JSON operators are unavailable.
Operations
| Limit | Consequence |
|---|---|
| Eviction is approximate | A victim is the best of maxmemory-samples random draws, not the true least-recently-used key |
| maxmemory measures the process | Client buffers and the runtime count toward it, so a limit below what the server needs at rest can never be met |
| Snapshot-only persistence | A SIGKILL or crash loses everything since the last save; at most ~60s on a normal exit |
| No replication or clustering | One process, one node, bounded by one machine's RAM and one CPU core |
| Single-threaded event loop | One slow command delays every other client |
Performance characteristics
- Sorted set operations are O(n). A sorted array, not a skip list. Fine at moderate scale, not built for huge sets.
- SCAN costs O(n log n) per call. The cursor is a position in a sorted snapshot of the keyspace. Redis uses a different cursor implementation with O(1) work per call.
- Client-side caching is unimplemented. RESP3 push messages are used for pub/sub, but tracking and invalidation messages are not available.
What it is good at
Klyro fits single-node workloads that keep frequently accessed state, queues, counters, collections, and moderate search indexes close to the application. Run it on a trusted network and use it where snapshot-based durability meets the workload's recovery needs. Large vector collections, public endpoints, and workloads requiring replication need a different deployment today. See the roadmap for what is coming.
