Data types
ffkv’s current taxonomy contains 19 families, counting bitmaps and bitfields separately even though both operate on string bytes. Native FQ.* queues are an ffkv extension beyond that catalog. Search is a separate indexing capability, not an extra family.
Choose a model
Section titled “Choose a model”| Family | Use it for | Result model |
|---|---|---|
| Strings | Bytes, counters, expiring values | Exact bytes/integer arithmetic |
| Lists | Ordered payloads and remove-on-pop queues | Exact order |
| Sets | Membership and algebra | Exact unique members |
| Hashes | Field/value records and field TTL | Exact fields |
| Sorted sets | Leaderboards, ordered schedules | Exact member/score index |
| Bitmaps | Dense boolean flags | Exact addressed bits |
| Bitfields | Packed fixed-width integers | Exact within chosen overflow policy |
| Geospatial | Point proximity and regions | Encoded coordinates and computed distance |
| HyperLogLog | Unique cardinality with bounded space | Estimate, no member enumeration |
| Streams | Append history and consumer groups | Ordered entries/pending ownership |
| JSON | Path-addressable document trees | Exact document operations |
| Arrays | Sparse unsigned-index byte strings | Exact slots, holes, and cursor |
| Time series | Timestamped samples and aggregation | Samples with floating-point aggregates |
| Vector sets | Embedding similarity | Approximate HNSW search; explicit exhaustive mode |
| Bloom filters | Compact membership prefilters | Possible false positives |
| Cuckoo filters | Fingerprint membership/counting/deletion | Probabilistic membership/counts |
| Count-min sketch | Frequency estimates | Collision-biased estimates |
| Top-K | Heavy hitters | Approximate ranked candidates |
| t-digest | Quantiles/CDF over measurements | Approximate distribution |
Prefer an exact set/hash/counter when an incorrect answer changes authorization, money, or irreversible work. Probabilistic structures are useful for ranking, telemetry, and prefiltering with an authoritative fallback; they are not interchangeable with exact collections.
Shared semantics
Section titled “Shared semantics”Examples use target/release/ffkv-cli -p 6382 against the quickstart instance. Use a fresh dataset; commands mutate namespaced example keys. A command on an incompatible existing type generally returns WRONGTYPE; this is different from a missing key. Some families share physical representations: bitmaps/bitfields/HyperLogLog use strings, and geo uses sorted sets. Avoid unrelated commands that corrupt their encoded meaning.
All nineteen families participate in key TTLs, WATCH, ACLs, WAL recovery, checkpoints, and backups in both storage profiles. No data directory means no restart durability. Hybrid offloads only large list and native-job bodies: other families stay in RAM. Request/reply limits apply independently of family limits. See persistence, limits, and compatibility.
A SCAN-family cursor is opaque and not a snapshot; COUNT is a hint. ARSCAN is a different index/value range API. Prefer bounded reads to whole-collection commands for large data.
For workflows rather than individual types, see list queues, native leased jobs, transactions, and search indexes.