compatibility-test-suite-fo.../cts_refer.md

295 lines
102 KiB
Markdown

> 1. The table content consists of the commands supported by CTS (resp-compatibility) and their version information
> 2. This table is generated based on the command JSON format description of Redis 7.2. If you have any doubts, you can refer to the relevant files
> 3. If the table information does not match the actual testing, please submit an Issue :)
- Supported major versions
- 1.0
- 2.8
- 3.2
- 4.0
- 5.0
- 6.0
- 6.2
- 7.0
- 7.2
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-------------|-------------------------------------------------------|--------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-------------------------------------------------------------------------------------------------|-------------------------------------------|-----------------|--------------------------------------------------------|-----------------|
| **generic** | [del](https://redis.io/commands/del/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [unlink](https://redis.io/commands/unlink/) | | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [rename](https://redis.io/commands/rename/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [renamenx](https://redis.io/commands/renamenx/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [randomkey](https://redis.io/commands/randomkey/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [exists](https://redis.io/commands/exists/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [ttl](https://redis.io/commands/ttl/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [pttl](https://redis.io/commands/pttl/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [expire](https://redis.io/commands/expire/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added options: `NX`, `XX`, `GT` and `LT`.'] | ✓ |
| | [expireat](https://redis.io/commands/expireat/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added options: `NX`, `XX`, `GT` and `LT`.'] | ✓ |
| | [pexpire](https://redis.io/commands/pexpire/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added options: `NX`, `XX`, `GT` and `LT`.'] | ✓ |
| | [pexpireat](https://redis.io/commands/pexpireat/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added options: `NX`, `XX`, `GT` and `LT`.'] | ✓ |
| | [expiretime](https://redis.io/commands/expiretime/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [pexpiretime](https://redis.io/commands/pexpiretime/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [persist](https://redis.io/commands/persist/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [dump](https://redis.io/commands/dump/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [touch](https://redis.io/commands/touch/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [restore](https://redis.io/commands/restore/) | | ✗ | ✓ | ✓ | ✓ | ['5.0.0', 'Added the `ABSTTL` modifier.']/['5.0.0', 'Added the `IDLETIME` and `FREQ` options.'] | ✓ | ✓ | ✓ | ✓ |
| | [scan](https://redis.io/commands/scan/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.0.0', 'Added the `TYPE` subcommand.'] | ✓ | ✓ | ✓ |
| | [keys](https://redis.io/commands/keys/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [move](https://redis.io/commands/move/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [copy](https://redis.io/commands/copy/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [type](https://redis.io/commands/type/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [wait](https://redis.io/commands/wait/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sort](https://redis.io/commands/sort/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sort_ro](https://redis.io/commands/sort_ro/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [migrate](https://redis.io/commands/migrate/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.0.0', 'Added the `AUTH2` option.'] | ✓ | ✓ | ✓ |
| | object | [freq](https://redis.io/commands/object-freq/) | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [refcount](https://redis.io/commands/object-refcount/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [idletime](https://redis.io/commands/object-idletime/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [encoding](https://redis.io/commands/object-encoding/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|------------|---------------------------------------------------------|----------------------------------------------------------|-----------------|-----------------|-----------------|--------------------------------------------------------|-----------------|-----------------|-------------------------------------------------------|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| **server** | acl | [whoami](https://redis.io/commands/acl-whoami/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ |
| | | [setuser](https://redis.io/commands/acl-setuser/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ['6.2.0', 'Added Pub/Sub channel patterns.'] | ['7.0.0', 'Added selectors and key based permissions.'] | ✓ |
| | | [deluser](https://redis.io/commands/acl-deluser/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ |
| | | [users](https://redis.io/commands/acl-users/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ |
| | | [log](https://redis.io/commands/acl-log/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ['7.2.0', 'Added entry ID, timestamp created, and timestamp last updated.'] |
| | | [dryrun](https://redis.io/commands/acl-dryrun/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | config | [get](https://redis.io/commands/config-get/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the ability to pass multiple pattern parameters in one call'] | ✓ |
| | | [set](https://redis.io/commands/config-set/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the ability to pass multiple pattern parameters in one call'] | ✓ |
| | | [resetstat](https://redis.io/commands/config-resetstat/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | module | [list](https://redis.io/commands/module-list/) | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [bgsave](https://redis.io/commands/bgsave/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [bgrewriteaof](https://redis.io/commands/bgrewriteaof/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [dbsize](https://redis.io/commands/dbsize/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [swapdb](https://redis.io/commands/swapdb/) | | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [slaveof](https://redis.io/commands/slaveof/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [flushall](https://redis.io/commands/flushall/) | | ✓ | ✓ | ✓ | ['4.0.0', 'Added the `ASYNC` flushing mode modifier.'] | ✓ | ✓ | ['6.2.0', 'Added the `SYNC` flushing mode modifier.'] | ✓ | ✓ |
| | [flushdb](https://redis.io/commands/flushdb/) | | ✓ | ✓ | ✓ | ['4.0.0', 'Added the `ASYNC` flushing mode modifier.'] | ✓ | ✓ | ['6.2.0', 'Added the `SYNC` flushing mode modifier.'] | ✓ | ✓ |
| | [replicaof](https://redis.io/commands/replicaof/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|------------|-------------------------------------------------------|-----|-----------------|-----------------|-----------------|-----------------|-----------------|------------------------------------------|---------------------------------------------------------|----------------------------------------------------------------------|-----------------|
| **string** | [set](https://redis.io/commands/set/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.0.0', 'Added the `KEEPTTL` option.'] | ['6.2.0', 'Added the `GET`, `EXAT` and `PXAT` option.'] | ['7.0.0', 'Allowed the `NX` and `GET` options to be used together.'] | ✓ |
| | [setex](https://redis.io/commands/setex/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [setnx](https://redis.io/commands/setnx/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [psetex](https://redis.io/commands/psetex/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [append](https://redis.io/commands/append/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [get](https://redis.io/commands/get/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [getex](https://redis.io/commands/getex/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [getdel](https://redis.io/commands/getdel/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [substr](https://redis.io/commands/substr/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [strlen](https://redis.io/commands/strlen/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [getset](https://redis.io/commands/getset/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [setrange](https://redis.io/commands/setrange/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [getrange](https://redis.io/commands/getrange/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [incr](https://redis.io/commands/incr/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [decr](https://redis.io/commands/decr/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [incrby](https://redis.io/commands/incrby/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [decrby](https://redis.io/commands/decrby/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [incrbyfloat](https://redis.io/commands/incrbyfloat/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [mset](https://redis.io/commands/mset/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [msetnx](https://redis.io/commands/msetnx/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [mget](https://redis.io/commands/mget/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lcs](https://redis.io/commands/lcs/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|------------|-------------------------------------------------------|---|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|---------------------------------------------|-----------------|
| **bitmap** | [setbit](https://redis.io/commands/setbit/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [getbit](https://redis.io/commands/getbit/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [bitop](https://redis.io/commands/bitop/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [bitpos](https://redis.io/commands/bitpos/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the `BYTE / BIT` option.'] | ✓ |
| | [bitcount](https://redis.io/commands/bitcount/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the `BYTE / BIT` option.'] | ✓ |
| | [bitfield](https://redis.io/commands/bitfield/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [bitfield_ro](https://redis.io/commands/bitfield_ro/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-----------------|-----------------------------------------------|---|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|
| **transaction** | [discard](https://redis.io/commands/discard/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [exec](https://redis.io/commands/exec/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [multi](https://redis.io/commands/multi/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [unwatch](https://redis.io/commands/unwatch/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [watch](https://redis.io/commands/watch/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-------------|-----------------------------------------------------------|---|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|
| hyperloglog | [pfadd](https://redis.io/commands/pfadd/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [pfcount](https://redis.io/commands/pfcount/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [pfmerge](https://redis.io/commands/pfmerge/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-----------|-----------------------------------------------------|---|-----------------|-----------------|-----------------|----------------------------------------------------|-----------------|--------------------------------------------------------------------------|------------------------------------------|-----------------|-----------------|
| **list** | [lset](https://redis.io/commands/lset/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [llen](https://redis.io/commands/llen/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lpush](https://redis.io/commands/lpush/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lpushx](https://redis.io/commands/lpushx/) | | ✗ | ✓ | ✓ | ['4.0.0', 'Accepts multiple `element` arguments.'] | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lindex](https://redis.io/commands/lindex/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lpos](https://redis.io/commands/lpos/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [lrem](https://redis.io/commands/lrem/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lrange](https://redis.io/commands/lrange/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [rpush](https://redis.io/commands/rpush/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [ltrim](https://redis.io/commands/ltrim/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [linsert](https://redis.io/commands/linsert/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [rpushx](https://redis.io/commands/rpushx/) | | ✗ | ✗ | ✗ | ['4.0.0', 'Accepts multiple `element` arguments.'] | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [rpoplpush](https://redis.io/commands/rpoplpush/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [lmove](https://redis.io/commands/lmove/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [lmpop](https://redis.io/commands/lmpop/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [rpop](https://redis.io/commands/rpop/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `count` argument.'] | ✓ | ✓ |
| | [lpop](https://redis.io/commands/lpop/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `count` argument.'] | ✓ | ✓ |
| | [brpop](https://redis.io/commands/brpop/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.0.0', '`timeout` is interpreted as a double instead of an integer.'] | ✓ | ✓ | ✓ |
| | [blpop](https://redis.io/commands/blpop/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.0.0', '`timeout` is interpreted as a double instead of an integer.'] | ✓ | ✓ | ✓ |
| | [brpoplpush](https://redis.io/commands/brpoplpush/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.0.0', '`timeout` is interpreted as a double instead of an integer.'] | ✓ | ✓ | ✓ |
| | [blmove](https://redis.io/commands/blmove/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [blmpop](https://redis.io/commands/blmpop/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-----------|---------------------------------------------------------|---|-----------------|-----------------|-----------------|--------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|
| **hash** | [hset](https://redis.io/commands/hset/) | | ✗ | ✓ | ✓ | ['4.0.0', 'Accepts multiple `field` and `value` arguments.'] | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hsetnx](https://redis.io/commands/hsetnx/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hget](https://redis.io/commands/hget/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hstrlen](https://redis.io/commands/hstrlen/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hexists](https://redis.io/commands/hexists/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hlen](https://redis.io/commands/hlen/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hkeys](https://redis.io/commands/hkeys/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hvals](https://redis.io/commands/hvals/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hgetall](https://redis.io/commands/hgetall/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hincrby](https://redis.io/commands/hincrby/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hincrbyfloat](https://redis.io/commands/hincrbyfloat/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hscan](https://redis.io/commands/hscan/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hrandfield](https://redis.io/commands/hrandfield/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [hdel](https://redis.io/commands/hdel/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hmset](https://redis.io/commands/hmset/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [hmget](https://redis.io/commands/hmget/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-----------|-------------------------------------------------------|---|-----------------|-----------------|------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|
| **set** | [sadd](https://redis.io/commands/sadd/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [srem](https://redis.io/commands/srem/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sscan](https://redis.io/commands/sscan/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [scard](https://redis.io/commands/scard/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [spop](https://redis.io/commands/spop/) | | ✓ | ✓ | ['3.2.0', 'Added the `count` argument.'] | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [srandmember](https://redis.io/commands/srandmember/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [smembers](https://redis.io/commands/smembers/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [sismember](https://redis.io/commands/sismember/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [smismember](https://redis.io/commands/smismember/) | | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sdiffstore](https://redis.io/commands/sdiffstore/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sinterstore](https://redis.io/commands/sinterstore/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sunionstore](https://redis.io/commands/sunionstore/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sdiff](https://redis.io/commands/sdiff/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sinter](https://redis.io/commands/sinter/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sunion](https://redis.io/commands/sunion/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [smove](https://redis.io/commands/smove/) | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [sintercard](https://redis.io/commands/sintercard/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|----------------|-----------------------------------------------------------------|---|-----------------|-----------------|-----------------|-----------------|-----------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------|-----------------|-------------------------------------------------------|
| **sorted set** | [zadd](https://redis.io/commands/zadd/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `GT` and `LT` options.'] | ✓ | ✓ |
| | [zrem](https://redis.io/commands/zrem/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zcard](https://redis.io/commands/zcard/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrank](https://redis.io/commands/zrank/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.2.0', 'Added the optional `WITHSCORE` argument.'] |
| | [zrevrank](https://redis.io/commands/zrevrank/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.2.0', 'Added the optional `WITHSCORE` argument.'] |
| | [zcount](https://redis.io/commands/zcount/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zincrby](https://redis.io/commands/zincrby/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zscan](https://redis.io/commands/zscan/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrandmember](https://redis.io/commands/zrandmember/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zremrangebylex](https://redis.io/commands/zremrangebylex/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zremrangebyscore](https://redis.io/commands/zremrangebyscore/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zremrangebyrank](https://redis.io/commands/zremrangebyrank/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zlexcount](https://redis.io/commands/zlexcount/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrangebylex](https://redis.io/commands/zrangebylex/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrevrangebylex](https://redis.io/commands/zrevrangebylex/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrangebyscore](https://redis.io/commands/zrangebyscore/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrevrangebyscore](https://redis.io/commands/zrevrangebyscore/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zscore](https://redis.io/commands/zscore/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zmscore](https://redis.io/commands/zmscore/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zpopmax](https://redis.io/commands/zpopmax/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zpopmin](https://redis.io/commands/zpopmin/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zmpop](https://redis.io/commands/zmpop/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [bzmpop](https://redis.io/commands/bzmpop/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [zintercard](https://redis.io/commands/zintercard/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [bzpopmin](https://redis.io/commands/bzpopmin/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ['6.0.0', '`timeout` is interpreted as a double instead of an integer.'] | ✓ | ✓ | ✓ |
| | [bzpopmax](https://redis.io/commands/bzpopmax/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ['6.0.0', '`timeout` is interpreted as a double instead of an integer.'] | ✓ | ✓ | ✓ |
| | [zdiffstore](https://redis.io/commands/zdiffstore/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zinterstore](https://redis.io/commands/zinterstore/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zunionstore](https://redis.io/commands/zunionstore/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [zrangestore](https://redis.io/commands/zrangestore/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zdiff](https://redis.io/commands/zdiff/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zinter](https://redis.io/commands/zinter/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zunion](https://redis.io/commands/zunion/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | [zrange](https://redis.io/commands/zrange/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options.'] | ✓ | ✓ |
| | [zrevrange](https://redis.io/commands/zrevrange/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-----------|-------------------------------------------------------------------------|---|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------------------------------------------|------------------------------------------------------|-----------------|
| **geo** | [geoadd](https://redis.io/commands/geoadd/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `CH`, `NX` and `XX` options.'] | ✓ | ✓ |
| | [geohash](https://redis.io/commands/geohash/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [geodist](https://redis.io/commands/geodist/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [geopos](https://redis.io/commands/geopos/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [georadius](https://redis.io/commands/georadius/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `ANY` option for `COUNT`.'] | ['7.0.0', 'Added support for uppercase unit names.'] | ✓ |
| | [georadius_ro](https://redis.io/commands/georadius_ro/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `ANY` option for `COUNT`.'] | ✓ | ✓ |
| | [georadiusbymember](https://redis.io/commands/georadiusbymember/) | | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['7.0.0', 'Added support for uppercase unit names.'] | ✓ |
| | [georadiusbymember_ro](https://redis.io/commands/georadiusbymember_ro/) | | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [geosearch](https://redis.io/commands/geosearch/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ['7.0.0', 'Added support for uppercase unit names.'] | ✓ |
| | [geosearchstore](https://redis.io/commands/geosearchstore/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ['7.0.0', 'Added support for uppercase unit names.'] | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|------------|-----------------------------------------------------|--------------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------------------------------|-----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| **stream** | [xadd](https://redis.io/commands/xadd/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ['6.2.0', 'Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option.'] | ['7.0.0', 'Added support for the `<ms>-*` explicit ID form.'] | ✓ |
| | [xdel](https://redis.io/commands/xdel/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [xack](https://redis.io/commands/xack/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [xclaim](https://redis.io/commands/xclaim/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [xlen](https://redis.io/commands/xlen/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [xtrim](https://redis.io/commands/xtrim/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ['6.2.0', 'Added the `MINID` trimming strategy and the `LIMIT` option.'] | ✓ | ✓ |
| | [xread](https://redis.io/commands/xread/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [xreadgroup](https://redis.io/commands/xreadgroup/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [xrange](https://redis.io/commands/xrange/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ['6.2.0', 'Added exclusive ranges.'] | ✓ | ✓ |
| | [xrevrange](https://redis.io/commands/xrevrange/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ['6.2.0', 'Added exclusive ranges.'] | ✓ | ✓ |
| | [xsetid](https://redis.io/commands/xsetid/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the `entries_added` and `max_deleted_entry_id` arguments.'] | ✓ |
| | [xpending](https://redis.io/commands/xpending/) | | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ['6.2.0', 'Added the `IDLE` option and exclusive range intervals.'] | ✓ | ✓ |
| | [xautoclaim](https://redis.io/commands/xautoclaim/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ['7.0.0', 'Added an element to the reply array, containing deleted entries the command cleared from the PEL'] | ✓ |
| | xgroup | [createconsumer](https://redis.io/commands/xgroup-createconsumer/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
| | | [delconsumer](https://redis.io/commands/xgroup-delconsumer/) | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [create](https://redis.io/commands/xgroup-create/) | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the `entries_read` named argument.'] | ✓ |
| | | [destroy](https://redis.io/commands/xgroup-destroy/) | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [setid](https://redis.io/commands/xgroup-setid/) | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the optional `entries_read` argument.'] | ✓ |
| | xinfo | [groups](https://redis.io/commands/xinfo-groups/) | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ['7.0.0', 'Added the `entries-read` and `lag` fields'] | ✓ |
| | | [consumers](https://redis.io/commands/xinfo-consumers/) | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ['7.2.0', 'Added the `inactive` field.'] |
| | | [stream](https://redis.io/commands/xinfo-stream/) | ✗ | ✗ | ✗ | ✗ | ✓ | ['6.0.0', 'Added the `FULL` modifier.'] | ✓ | ['7.0.0', 'Added the `max-deleted-entry-id`, `entries-added`, `recorded-first-entry-id`, `entries-read` and `lag` fields'] | ['7.2.0', 'Added the `active-time` field, and changed the meaning of `seen-time`.'] |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|-----------|-----------------------------------------------------|--------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|--------------------------------------------------------------------|-----------------|-----------------|
| scripting | [eval](https://redis.io/commands/eval/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [evalsha](https://redis.io/commands/evalsha/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [eval_ro](https://redis.io/commands/eval_ro/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [evalsha_ro](https://redis.io/commands/evalsha_ro/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | script | [load](https://redis.io/commands/script-load/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [exists](https://redis.io/commands/script-exists/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [flush](https://redis.io/commands/script-flush/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', 'Added the `ASYNC` and `SYNC` flushing mode modifiers.'] | ✓ | ✓ |
| | | [debug](https://redis.io/commands/script-debug/) | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [fcall](https://redis.io/commands/fcall/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [fcall_ro](https://redis.io/commands/fcall_ro/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | function | [stats](https://redis.io/commands/function-stats/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | | [list](https://redis.io/commands/function-list/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | | [dump](https://redis.io/commands/function-dump/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | | [restore](https://redis.io/commands/function-restore/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | | [flush](https://redis.io/commands/function-flush/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | | [delete](https://redis.io/commands/function-delete/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| **group** | **command** | | **Version 1.0** | **Version 2.8** | **Version 3.2** | **Version 4.0** | **Version 5.0** | **Version 6.0** | **Version 6.2** | **Version 7.0** | **Version 7.2** |
|------------|:-------------------------------------------------------:|------------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|--------------------------------------------------------------|-----------------|-----------------|
| **pubsub** | [publish](https://redis.io/commands/publish/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [subscribe](https://redis.io/commands/subscribe/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', '`RESET` can be called to exit subscribed state.'] | ✓ | ✓ |
| | [unsubscribe](https://redis.io/commands/unsubscribe/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | [punsubscribe](https://redis.io/commands/punsubscribe/) | | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ['6.2.0', '`RESET` can be called to exit subscribed state.'] | ✓ | ✓ |
| | [spublish](https://redis.io/commands/spublish/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [ssubscribe](https://redis.io/commands/ssubscribe/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | [sunsubscribe](https://redis.io/commands/sunsubscribe/) | | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | pubsub | [numsub](https://redis.io/commands/pubsub-numsub/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [numpat](https://redis.io/commands/pubsub-numpat/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [channels](https://redis.io/commands/pubsub-channels/) | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| | | [shardnumsub](https://redis.io/commands/pubsub-shardnumsub/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |
| | | [shardchannels](https://redis.io/commands/pubsub-shardchannels/) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ |