Skip to content

About

Limitations

Klyro is version 0.1.1. Review these operational and compatibility limits before using it for important workloads.

Missing commands

Klyro implements the 145 commands in this documentation. Calls to other commands return ERR unknown command. Notable absences include:

AreaStatus
Scripting (EVAL)Not implemented
Streams, Bitmaps, HyperLogLog, GeoNot implemented
ZUNIONSTORE/ZINTERSTORE, lexicographic ranges, ZADD flagsNot implemented
Sharded pub/sub and keyspace notificationsNot 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

LimitConsequence
Eviction is approximateA victim is the best of maxmemory-samples random draws, not the true least-recently-used key
maxmemory measures the processClient buffers and the runtime count toward it, so a limit below what the server needs at rest can never be met
Snapshot-only persistenceA SIGKILL or crash loses everything since the last save; at most ~60s on a normal exit
No replication or clusteringOne process, one node, bounded by one machine's RAM and one CPU core
Single-threaded event loopOne 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.