> For the complete documentation index, see [llms.txt](https://docs.hardpoint.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hardpoint.dev/guides/invar/appendix/redis-tm-command-support.md).

# Redis™ Command Support

Explanation of Invar's Redis™ command compatibility

Invar aims for broad compatibility with the Redis command set as of Redis 6.2, with two provisos:

* A command has to be feasible on the underlying LSM store without compromising its behavior — generally, that means it needs to keep roughly the same time/space complexity it has in Redis, not silently become something much slower.
* A command has to make semantic sense for Invar. Cluster management commands, for instance, don't — there's no cluster to manage in a single-writer model.

Remember: Invar's goal is not to be a 100% drop-in replacement for Redis™. Invar is a durable, transactional document store which speaks the RESP wire protocol and supports a wide variety of standard Redis™ commands.

Real-world client compatibility (BullMQ in particular) is the practical target this table gets tested against, not just the spec.

## Not on the roadmap

A few entire command groups aren't gaps so much as deliberate non-goals, and are worth naming up front rather than leaving you to infer it from a long list of 🚫:

* **Geospatial** — a large ongoing maintenance surface for a use case that hasn't come up yet.
* **Cluster management** — doesn't map onto Invar's single-node, single-writer model.
* **RBAC / ACL / AUTH** — authentication and authorization are explicitly out of scope for Invar itself. If you need this, see [Hardpoint's managed options](https://hardpoint.dev/).

**Legend:** ✅ implemented · 🚧 not yet implemented · 🚫 no plan to implement

Entire command groups with no support yet, but not ruled out, are simply omitted below rather than listed as all-🚧.

## String commands

| Command     | Status | Notes |
| ----------- | ------ | ----- |
| APPEND      | ✅      |       |
| DECR        | ✅      |       |
| DECRBY      | ✅      |       |
| GET         | ✅      |       |
| GETDEL      | ✅      |       |
| GETEX       | ✅      |       |
| GETRANGE    | ✅      |       |
| GETSET      | ✅      |       |
| INCR        | ✅      |       |
| INCRBY      | ✅      |       |
| INCRBYFLOAT | ✅      |       |
| MGET        | ✅      |       |
| MSET        | ✅      |       |
| MSETNX      | ✅      |       |
| PSETEX      | ✅      |       |
| SET         | ✅      |       |
| SETEX       | ✅      |       |
| SETNX       | ✅      |       |
| SETRANGE    | ✅      |       |
| STRLEN      | ✅      |       |
| SUBSTR      | ✅      |       |

## Hash commands

| Command      | Status | Notes |
| ------------ | ------ | ----- |
| HDEL         | ✅      |       |
| HEXISTS      | ✅      |       |
| HGET         | ✅      |       |
| HGETALL      | ✅      |       |
| HINCRBY      | ✅      |       |
| HINCRBYFLOAT | ✅      |       |
| HKEYS        | ✅      |       |
| HLEN         | ✅      |       |
| HMGET        | ✅      |       |
| HMSET        | ✅      |       |
| HRANDFIELD   | ✅      |       |
| HSCAN        | ✅      |       |
| HSET         | ✅      |       |
| HSETNX       | ✅      |       |
| HSTRLEN      | ✅      |       |
| HVALS        | ✅      |       |

## List commands

| Command    | Status | Notes                      |
| ---------- | ------ | -------------------------- |
| BLMOVE     | 🚧     |                            |
| BLPOP      | 🚧     |                            |
| BRPOP      | 🚧     |                            |
| BRPOPLPUSH | 🚧     |                            |
| LINDEX     | ✅      |                            |
| LINSERT    | ✅      |                            |
| LLEN       | ✅      |                            |
| LMOVE      | 🚧     |                            |
| LPOP       | ✅      |                            |
| LPOS       | 🚧     | Missing RANK/COUNT options |
| LPUSH      | ✅      |                            |
| LPUSHX     | ✅      |                            |
| LRANGE     | ✅      |                            |
| LREM       | ✅      |                            |
| LSET       | ✅      |                            |
| LTRIM      | ✅      |                            |
| RPOP       | ✅      |                            |
| RPOPLPUSH  | ✅      |                            |
| RPUSH      | ✅      |                            |
| RPUSHX     | ✅      |                            |

## Set commands

| Command     | Status | Notes |
| ----------- | ------ | ----- |
| SADD        | ✅      |       |
| SCARD       | ✅      |       |
| SDIFF       | ✅      |       |
| SDIFFSTORE  | ✅      |       |
| SINTER      | ✅      |       |
| SINTERSTORE | ✅      |       |
| SISMEMBER   | ✅      |       |
| SMEMBERS    | ✅      |       |
| SMISMEMBER  | 🚧     |       |
| SMOVE       | ✅      |       |
| SPOP        | ✅      |       |
| SRANDMEMBER | ✅      |       |
| SREM        | ✅      |       |
| SSCAN       | ✅      |       |
| SUNION      | ✅      |       |
| SUNIONSTORE | ✅      |       |

## Sorted set commands

| Command          | Status | Notes |
| ---------------- | ------ | ----- |
| BZPOPMAX         | ✅      |       |
| BZPOPMIN         | ✅      |       |
| ZADD             | ✅      |       |
| ZCARD            | ✅      |       |
| ZCOUNT           | ✅      |       |
| ZDIFF            | ✅      |       |
| ZDIFFSTORE       | ✅      |       |
| ZINCRBY          | ✅      |       |
| ZINTER           | ✅      |       |
| ZINTERSTORE      | ✅      |       |
| ZLEXCOUNT        | ✅      |       |
| ZMSCORE          | ✅      |       |
| ZPOPMAX          | ✅      |       |
| ZPOPMIN          | ✅      |       |
| ZRANDMEMBER      | ✅      |       |
| ZRANGE           | ✅      |       |
| ZRANGEBYLEX      | ✅      |       |
| ZRANGEBYSCORE    | ✅      |       |
| ZRANGESTORE      | ✅      |       |
| ZRANK            | ✅      |       |
| ZREM             | ✅      |       |
| ZREMRANGEBYLEX   | ✅      |       |
| ZREMRANGEBYRANK  | ✅      |       |
| ZREMRANGEBYSCORE | ✅      |       |
| ZREVRANGE        | ✅      |       |
| ZREVRANGEBYLEX   | ✅      |       |
| ZREVRANGEBYSCORE | ✅      |       |
| ZREVRANK         | ✅      |       |
| ZSCAN            | 🚧     |       |
| ZSCORE           | ✅      |       |
| ZUNION           | ✅      |       |
| ZUNIONSTORE      | ✅      |       |

## Bitmap commands

| Command      | Status | Notes                                               |
| ------------ | ------ | --------------------------------------------------- |
| BITCOUNT     | ✅      | Supports BYTE and BIT range modes                   |
| BITFIELD     | 🚧     |                                                     |
| BITFIELD\_RO | 🚧     |                                                     |
| BITOP        | ✅      | Supports AND, OR, XOR, NOT, DIFF, DIFF1, ANDOR, ONE |
| BITPOS       | ✅      | Supports BYTE and BIT range modes                   |
| GETBIT       | ✅      |                                                     |
| SETBIT       | ✅      |                                                     |

## HyperLogLog commands

| Command    | Status | Notes |
| ---------- | ------ | ----- |
| PFADD      | ✅      |       |
| PFCOUNT    | ✅      |       |
| PFDEBUG    | 🚧     |       |
| PFMERGE    | ✅      |       |
| PFSELFTEST | 🚧     |       |

## Stream commands

| Command         | Status | Notes                                                     |
| --------------- | ------ | --------------------------------------------------------- |
| XADD            | ✅      | Supports NOMKSTREAM, MAXLEN, MINID trimming               |
| XDEL            | ✅      |                                                           |
| XINFO STREAM    | ✅      |                                                           |
| XLEN            | ✅      |                                                           |
| XREAD           | ✅      |                                                           |
| XRANGE          | ✅      | With COUNT option                                         |
| XREVRANGE       | ✅      | With COUNT option                                         |
| XSETID          | ✅      |                                                           |
| XTRIM           | ✅      | MAXLEN and MINID modes, approximate (\~) treated as exact |
| XACK            | 🚧     | Consumer group support not implemented                    |
| XAUTOCLAIM      | 🚧     | Consumer group support not implemented                    |
| XCLAIM          | 🚧     | Consumer group support not implemented                    |
| XGROUP          | 🚧     | Consumer group support not implemented                    |
| XINFO CONSUMERS | 🚧     | Consumer group support not implemented                    |
| XINFO GROUPS    | 🚧     | Consumer group support not implemented                    |
| XPENDING        | 🚧     | Consumer group support not implemented                    |
| XREADGROUP      | 🚧     | Consumer group support not implemented                    |

## Pub/Sub commands

Like Redis, Pub/Sub messages sent through Invar are **not persisted** — they exist in memory only, and aren't covered by transactional guarantees. Treat Pub/Sub as best-effort, same as you would with real Redis.

| Command         | Status | Notes                 |
| --------------- | ------ | --------------------- |
| PSUBSCRIBE      | ✅      |                       |
| PUBLISH         | ✅      |                       |
| PUBSUB CHANNELS | ✅      |                       |
| PUBSUB NUMPAT   | ✅      |                       |
| PUBSUB NUMSUB   | ✅      |                       |
| PUNSUBSCRIBE    | ✅      |                       |
| SPUBLISH        | ✅      | Alias for PUBLISH     |
| SSUBSCRIBE      | ✅      | Alias for SUBSCRIBE   |
| SUBSCRIBE       | ✅      |                       |
| SUNSUBSCRIBE    | ✅      | Alias for UNSUBSCRIBE |
| UNSUBSCRIBE     | ✅      |                       |

## Transaction commands

| Command | Status | Notes |
| ------- | ------ | ----- |
| DISCARD | ✅      |       |
| EXEC    | ✅      |       |
| MULTI   | ✅      |       |
| UNWATCH | ✅      |       |
| WATCH   | ✅      |       |

## Scripting commands

| Command | Status | Notes                                                                                                                                                                                                                                                                 |
| ------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EVAL    | ✅      | [Piccolo](https://github.com/kyren/piccolo)-backed Lua interpreter; core stdlib (base, coroutine, math, string, table) + `tonumber`, `unpack`, `table.insert`/`remove`/`sort`/`concat`, `cmsgpack.unpack`, `cjson.encode`; `redis.call()` and `redis.pcall()` exposed |
| EVALSHA | ✅      | Looks up a previously cached script by SHA1 digest                                                                                                                                                                                                                    |

## Connection commands

| Command             | Status | Notes                                  |
| ------------------- | ------ | -------------------------------------- |
| AUTH                | 🚫     |                                        |
| CLIENT CACHING      | 🚫     |                                        |
| CLIENT GETNAME      | ✅      | Per-connection name via CLIENT SETNAME |
| CLIENT GETREDIR     | 🚫     |                                        |
| CLIENT ID           | ✅      |                                        |
| CLIENT INFO         | ✅      |                                        |
| CLIENT KILL         | 🚫     |                                        |
| CLIENT LIST         | ✅      | Reports the current connection only    |
| CLIENT NO-EVICT     | 🚫     |                                        |
| CLIENT NO-TOUCH     | 🚫     |                                        |
| CLIENT PAUSE        | 🚫     |                                        |
| CLIENT REPLY        | 🚫     |                                        |
| CLIENT SETNAME      | ✅      |                                        |
| CLIENT SETINFO      | ✅      | LIB-NAME / LIB-VER                     |
| CLIENT TRACKING     | 🚫     |                                        |
| CLIENT TRACKINGINFO | 🚫     |                                        |
| CLIENT UNBLOCK      | 🚫     |                                        |
| CLIENT UNPAUSE      | 🚫     |                                        |
| ECHO                | ✅      |                                        |
| HELLO               | ✅      | RESP2 only; RESP3 refused with NOPROTO |
| PING                | ✅      |                                        |
| QUIT                | ✅      |                                        |
| RESET               | 🚧     |                                        |
| SELECT              | ✅      |                                        |

## Server commands

| Command                 | Status | Notes                                         |
| ----------------------- | ------ | --------------------------------------------- |
| ACL CAT                 | 🚫     |                                               |
| ACL DELUSER             | 🚫     |                                               |
| ACL DRYRUN              | 🚫     |                                               |
| ACL GENPASS             | 🚫     |                                               |
| ACL GETUSER             | 🚫     |                                               |
| ACL LIST                | 🚫     |                                               |
| ACL LOAD                | 🚫     |                                               |
| ACL LOG                 | 🚫     |                                               |
| ACL SAVE                | 🚫     |                                               |
| ACL SETUSER             | 🚫     |                                               |
| ACL USERS               | 🚫     |                                               |
| ACL WHOAMI              | 🚫     |                                               |
| BGREWRITEAOF            | 🚫     |                                               |
| BGSAVE                  | ✅      | No-op                                         |
| COMMAND                 | 🚫     |                                               |
| COMMAND COUNT           | 🚫     |                                               |
| COMMAND DOCS            | 🚫     |                                               |
| COMMAND GETKEYS         | 🚫     |                                               |
| COMMAND GETKEYSANDFLAGS | 🚫     |                                               |
| COMMAND INFO            | 🚫     |                                               |
| COMMAND LIST            | 🚫     |                                               |
| CONFIG GET              | 🚫     |                                               |
| CONFIG RESETSTAT        | 🚫     |                                               |
| CONFIG REWRITE          | 🚫     |                                               |
| CONFIG SET              | 🚫     |                                               |
| DBSIZE                  | ✅      | ⚠️ Runs in O(n) time                          |
| DEBUG                   | 🚫     |                                               |
| FAILOVER                | 🚫     |                                               |
| FLUSHALL                | ✅      |                                               |
| FLUSHDB                 | ✅      |                                               |
| INFO                    | ✅      | Reports redis\_version:6.2.0 + invar\_version |
| LASTSAVE                | 🚫     |                                               |
| LATENCY DOCTOR          | 🚫     |                                               |
| LATENCY GRAPH           | 🚫     |                                               |
| LATENCY HISTORY         | 🚫     |                                               |
| LATENCY LATEST          | 🚫     |                                               |
| LATENCY RESET           | 🚫     |                                               |
| LOLWUT                  | ✅      | Returns version info instead of ASCII art     |
| MEMORY DOCTOR           | 🚫     |                                               |
| MEMORY MALLOC-STATS     | 🚫     |                                               |
| MEMORY PURGE            | 🚫     |                                               |
| MEMORY STATS            | 🚫     |                                               |
| MEMORY USAGE            | 🚫     |                                               |
| MODULE LIST             | ✅      |                                               |
| MODULE LOAD             | 🚫     |                                               |
| MODULE LOADEX           | 🚫     |                                               |
| MODULE UNLOAD           | 🚫     |                                               |
| MONITOR                 | 🚫     |                                               |
| PSYNC                   | ✅      | No-op                                         |
| REPLCONF                | 🚫     |                                               |
| REPLICAOF               | 🚫     |                                               |
| RESTORE-ASKING          | 🚫     |                                               |
| ROLE                    | 🚫     |                                               |
| SAVE                    | ✅      |                                               |
| SHUTDOWN                | 🚫     |                                               |
| SLAVEOF                 | 🚫     |                                               |
| SLOWLOG GET             | 🚫     |                                               |
| SLOWLOG LEN             | 🚫     |                                               |
| SLOWLOG RESET           | 🚫     |                                               |
| SWAPDB                  | 🚫     |                                               |
| SYNC                    | ✅      |                                               |
| TIME                    | ✅      |                                               |

## Generic (key) commands

| Command         | Status | Notes                                    |
| --------------- | ------ | ---------------------------------------- |
| COPY            | 🚧     |                                          |
| DEL             | ✅      |                                          |
| DUMP            | 🚧     |                                          |
| EXISTS          | ✅      |                                          |
| EXPIRE          | ✅      |                                          |
| EXPIREAT        | 🚧     |                                          |
| EXPIRETIME      | 🚧     |                                          |
| KEYS            | 🚧     | Use SCAN instead                         |
| MIGRATE         | 🚧     |                                          |
| MOVE            | ✅      |                                          |
| OBJECT ENCODING | 🚧     |                                          |
| OBJECT FREQ     | 🚧     |                                          |
| OBJECT IDLETIME | ✅      | No-op, returns nil                       |
| OBJECT REFCOUNT | 🚧     |                                          |
| PERSIST         | ✅      |                                          |
| PEXPIRE         | ✅      |                                          |
| PEXPIREAT       | 🚧     |                                          |
| PEXPIRETIME     | 🚧     |                                          |
| PTTL            | ✅      |                                          |
| RANDOMKEY       | 🚧     |                                          |
| RENAME          | ✅      |                                          |
| RENAMENX        | ✅      |                                          |
| RESTORE         | 🚧     |                                          |
| SCAN            | ✅      | MATCH, COUNT, and TYPE options supported |
| SORT            | 🚧     |                                          |
| SORT\_RO        | 🚧     |                                          |
| TOUCH           | 🚧     |                                          |
| TTL             | ✅      |                                          |
| TYPE            | ✅      |                                          |
| UNLINK          | ✅      | Equivalent behavior to DEL               |
| WAIT            | ✅      |                                          |

## JSON module commands

| Command           | Status | Notes |
| ----------------- | ------ | ----- |
| JSON.ARRAPPEND    | ✅      |       |
| JSON.ARRINDEX     | ✅      |       |
| JSON.ARRINSERT    | ✅      |       |
| JSON.ARRLEN       | ✅      |       |
| JSON.ARRPOP       | ✅      |       |
| JSON.ARRTRIM      | ✅      |       |
| JSON.CLEAR        | ✅      |       |
| JSON.DEBUG        | 🚧     |       |
| JSON.DEBUG MEMORY | 🚧     |       |
| JSON.DEL          | ✅      |       |
| JSON.FORGET       | 🚧     |       |
| JSON.GET          | ✅      |       |
| JSON.MERGE        | 🚧     |       |
| JSON.MGET         | ✅      |       |
| JSON.MSET         | 🚧     |       |
| JSON.NUMINCRBY    | ✅      |       |
| JSON.NUMMULTBY    | ✅      |       |
| JSON.OBJKEYS      | ✅      |       |
| JSON.OBJLEN       | ✅      |       |
| JSON.RESP         | ✅      |       |
| JSON.SET          | ✅      |       |
| JSON.STRAPPEND    | ✅      |       |
| JSON.STRLEN       | ✅      |       |
| JSON.TOGGLE       | 🚧     |       |
| JSON.TYPE         | ✅      |       |

## Bloom filter module commands

| Command      | Status | Notes |
| ------------ | ------ | ----- |
| BF.ADD       | ✅      |       |
| BF.CARD      | 🚧     |       |
| BF.EXISTS    | ✅      |       |
| BF.INFO      | ✅      |       |
| BF.INSERT    | ✅      |       |
| BF.LOADCHUNK | 🚧     |       |
| BF.MADD      | ✅      |       |
| BF.MEXISTS   | ✅      |       |
| BF.RESERVE   | ✅      |       |
| BF.SCANDUMP  | 🚧     |       |

## Want to help extend coverage?

Contributions are welcome. Before starting on anything, check the tables above — for anything marked 🚧, feel free to open a PR with an implementation proposal directly; for anything marked 🚫, please open an issue to discuss first rather than sending a surprise PR, since those are deliberate scope decisions and worth talking through before code gets written.
