Compared with standard instances, cluster instances and read/write splitting instances provide different levels of support for native Redis commands. For example, specific commands are disabled, and a single command is restricted from accessing keys that hash to multiple slots. Make sure that you are familiar with the differences between the instances and follow the recommended practices and guidelines for each architecture.
Limits on commands supported by cluster instances
Tair cluster instances are compatible with different open source Redis versions. For information about the commands supported by each version, see Limits on commands supported by Tair .
Cluster instances support two connection modes: the direct connection mode and the proxy mode. Different modes have different limits on commands.
Cluster instances in direct connection mode
Specific mainstream Redis clients such as Jedis do not provide built-in support for the SELECT command.
To run a command that involves multiple keys, make sure that all keys are stored in the same slot. For example, you can use hashtags to meet the preceding condition.
For cluster instances in direct connection mode, transactions must be executed in the same manner as the transactions in open source Redis clusters. Make sure that all keys involved in a transaction belong to the same slot.
Cluster instances in proxy mode
In addition to the commands that are not supported by cluster instances in direct connection mode, proxy nodes do not support commands such as WAIT, HELLO, and CLIENT ID. However, proxy nodes support the SELECT command, and can run commands such as DEL and EXISTS on multiple keys across different slots. For more information, see Commands supported by instances in proxy mode.
The CLIENT KILL command is available in the following formats: CLIENT KILL <ip:port>
and CLIENT KILL ADDR <ip:port>
.
The CLIENT LIST command retrieves information about all client connections to a proxy node. The output of the CLIENT LIST command in Tair may be different from the output of the native Redis command.
The following fields have the same meanings as the fields in the native Redis command: id
, age
, idle
, addr
, fd
, name
, db
, multi
, omem
, and cmd
.
The values of the sub
and psub
fields are the same. The values are 1 or 0.
The following fields have no specific meanings: qbuf
, qbuf-free
, obl
, and oll
.
Limits on transactions:
If all keys involved in a transaction belong to the same slot, the transaction can be executed as expected based on transaction semantics.
If a transaction involves keys that do not belong to the same slot but each command within the transaction operates on keys that belong to the same slot, the transaction can be executed as expected. Transaction semantics are honored for commands within a transaction that operate on keys in the same slot but not for commands that operate on keys in different slots.
If a single command within a transaction involves keys that belong to different slots, the command cannot be run.
Specific commands without keys cannot be run in transactions. For more information, see Commands supported by instances in proxy mode.
To facilitate routine management and O&M, cluster instances in proxy mode support multiple commands developed in-house by Alibaba Cloud. For more information, see In-house commands for Tair instances in proxy mode .
Redis Cluster imposes specific limits on the use of Lua scripts. On top of this, Tair cluster instances impose additional limits. For more information, see Limits on Lua scripts in cluster instances .
Limits on commands supported by read/write splitting instances
Tair read/write splitting instances are compatible with different open source Redis versions. For information about the commands supported by each version, see Limits on commands supported by Tair .
By default, read/write splitting instances contain proxy nodes. Therefore, the command limits imposed on proxy nodes also apply to read/write splitting instances. For example, proxy nodes do not support commands such as WAIT, HELLO, and CLIENT ID. For more information, see Commands supported by instances in proxy mode .
To facilitate routine management and O&M, read/write splitting instances support multiple commands developed in-house by Alibaba Cloud. For more information, see In-house commands for Tair instances in proxy mode .
Commands supported by instances in proxy mode
The following information applies to cluster instances in proxy mode and read/write splitting instances. The following section describes the symbols that are used in the tables in this topic:
✔️️ indicates that the command is supported by proxy nodes. If the command supports multiple keys, the command can be run across different slots.
️⭕️ indicates that the command is supported by cluster instances in proxy mode, but with specific limits. Make sure that the keys involved in the command are stored in the same slot. This can be achieved by using techniques such as hashtags.
❌ indicates that the command is not supported by proxy nodes.
Footnote ①: The command returns only OK
or an empty result to maintain compatibility with specific client frameworks.
Footnote ②: The request is directly handled by proxy nodes, regardless of the Redis version being used.
Bitmaps
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
BITCOUNT | ✔️ | ✔️ | ✔️ | ✔️ |
BITFIELD | ✔️ | ✔️ | ✔️ | ✔️ |
BITFIELD_RO | ❌ | ❌ | ❌ | ❌ |
BITOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BITPOS | ✔️ | ✔️ | ✔️ | ✔️ |
GETBIT | ✔️ | ✔️ | ✔️ | ✔️ |
SETBIT | ✔️ | ✔️ | ✔️ | ✔️ |
Cluster management
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
CLUSTER ADDSLOTS ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER ADDSLOTSRANGE | ❌ | ❌ | ❌ | ❌ |
CLUSTER BUMPEPOCH | ❌ | ❌ | ❌ | ❌ |
CLUSTER COUNT-FAILURE-REPORTS ② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER COUNTKEYSINSLOT ② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER DELSLOTS ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER DELSLOTSRANGE | ❌ | ❌ | ❌ | ❌ |
CLUSTER FAILOVER ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER FLUSHSLOTS | ❌ | ❌ | ❌ | ❌ |
CLUSTER FORGET ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER GETKEYSINSLOT ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER INFO ② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER KEYSLOT ② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER LINKS | ❌ | ❌ | ❌ | ❌ |
CLUSTER MEET ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER MYID | ❌ | ❌ | ❌ | ❌ |
CLUSTER NODES ② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER REPLICAS | ❌ | ❌ | ❌ | ❌ |
CLUSTER REPLICATE ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER RESET ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER SAVECONFIG ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER SET-CONFIG-EPOCH ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER SETSLOT ①② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER SHARDS | ❌ | ❌ | ❌ | ❌ |
CLUSTER SLAVES ② | ✔️ | ❌ | ✔️ | ❌ |
CLUSTER SLOTS ② | ✔️ | ❌ | ✔️ | ❌ |
READONLY ①② | ✔️ | ❌ | ✔️️ | ❌ |
READWRITE ①② | ✔️ | ❌ | ✔️ | ❌ |
Connection management
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
AUTH | ✔️ | ❌ | ✔️ | ✔️ |
CLIENT CACHING | ❌ | ❌ | ❌ | ❌ |
CLIENT GETNAME ② | ✔️ | ❌ | ✔️ | ❌ |
CLIENT GETREDIR | ❌ | ❌ | ❌ | ❌ |
CLIENT ID | ❌ | ❌ | ❌ | ❌ |
CLIENT INFO | ❌ | ❌ | ❌ | ❌ |
CLIENT KILL ② | ✔️ | ❌ | ✔️ | ❌ |
CLIENT LIST ② | ✔️ | ❌ | ✔️ | ❌ |
CLIENT NO-EVICT | ❌ | ❌ | ❌ | ❌ |
CLIENT PAUSE | ❌ | ❌ | ❌ | ❌ |
CLIENT REPLY | ❌ | ❌ | ❌ | ❌ |
CLIENT SETNAME ② | ✔️ | ❌ | ✔️ | ❌ |
CLIENT TRACKING | ❌ | ❌ | ❌ | ❌ |
CLIENT TRACKINGINFO | ❌ | ❌ | ❌ | ❌ |
CLIENT UNBLOCK | ❌ | ❌ | ❌ | ❌ |
CLIENT UNPAUSE | ❌ | ❌ | ❌ | ❌ |
ECHO | ✔️ | ❌ | ✔️ | ✔️ |
HELLO | ❌ | ❌ | ❌ | ❌ |
PING ② | ✔️ | ❌ | ✔️ | ✔️ |
QUIT ② | ✔️ | ✔️ | ✔️ | ✔️ |
RESET | ❌ | ❌ | ❌ | ❌ |
SELECT | ✔️ | ✔️ | ✔️ | ✔️ |
Generic
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
COPY | ⭕️ | ⭕️ | ✔️ | ✔️ |
DEL | ✔️ | ⭕️ | ✔️ | ✔️ |
DUMP | ✔️ | ✔️ | ✔️ | ✔️ |
EXISTS | ✔️ | ⭕️ | ✔️ | ✔️ |
EXPIRE | ✔️ | ✔️ | ✔️ | ✔️ |
EXPIREAT | ✔️ | ✔️ | ✔️ | ✔️ |
EXPIRETIME | ✔️ | ✔️ | ✔️ | ✔️ |
KEYS | ✔️ | ❌ | ✔️ | ✔️ |
MIGRATE | ❌ | ❌ | ❌ | ❌ |
MOVE | ✔️ | ✔️ | ✔️ | ✔️ |
OBJECT | ✔️ | ✔️ | ✔️ | ✔️ |
OBJECT HELP | ✔️ | ✔️ | ✔️ | ✔️ |
PERSIST | ✔️ | ✔️ | ✔️ | ✔️ |
PEXPIRE | ✔️ | ✔️ | ✔️ | ✔️ |
PEXPIREAT | ✔️ | ✔️ | ✔️ | ✔️ |
PEXPIRETIME | ✔️ | ✔️ | ✔️ | ✔️ |
PTTL | ✔️ | ✔️ | ✔️ | ✔️ |
RANDOMKEY | ✔️ | ❌ | ✔️ | ✔️ |
RENAME | ⭕️ | ⭕️ | ✔️ | ✔️ |
RENAMENX | ⭕️ | ⭕️ | ✔️ | ✔️ |
RESTORE | ✔️ | ✔️ | ✔️ | ✔️ |
SCAN | ✔️ | ❌ | ✔️ | ✔️ |
SORT | ⭕️ | ⭕️ | ✔️ | ✔️ |
SORT_RO | ✔️ | ✔️ | ✔️ | ✔️ |
TOUCH | ❌ | ❌ | ❌ | ❌ |
TTL | ✔️ | ✔️ | ✔️ | ✔️ |
TYPE | ✔️ | ✔️ | ✔️ | ✔️ |
UNLINK | ✔️ | ⭕️ | ✔️ | ✔️ |
WAIT | ❌ | ❌ | ❌ | ❌ |
Geospatial indices
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
GEOADD | ✔️ | ✔️ | ✔️ | ✔️ |
GEODIST | ✔️ | ✔️ | ✔️ | ✔️ |
GEOHASH | ✔️ | ✔️ | ✔️ | ✔️ |
GEOPOS | ✔️ | ✔️ | ✔️ | ✔️ |
GEORADIUS | ⭕️ | ⭕️ | ✔️ | ✔️ |
GEORADIUSBYMEMBER | ⭕️ | ⭕️ | ✔️ | ✔️ |
GEOSEARCH | ✔️ | ✔️ | ✔️ | ✔️ |
GEOSEARCHSTORE | ⭕️ | ⭕️ | ✔️ | ✔️ |
Hashes
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
HDEL | ✔️ | ✔️ | ✔️ | ✔️ |
HEXISTS | ✔️ | ✔️ | ✔️ | ✔️ |
HGET | ✔️ | ✔️ | ✔️ | ✔️ |
HGETALL | ✔️ | ✔️ | ✔️ | ✔️ |
HINCRBY | ✔️ | ✔️ | ✔️ | ✔️ |
HINCRBYFLOAT | ✔️ | ✔️ | ✔️ | ✔️ |
HKEYS | ✔️ | ✔️ | ✔️ | ✔️ |
HLEN | ✔️ | ✔️ | ✔️ | ✔️ |
HMGET | ✔️ | ✔️ | ✔️ | ✔️ |
HMSET | ✔️ | ✔️ | ✔️ | ✔️ |
HRANDFIELD | ✔️ | ✔️ | ✔️ | ✔️ |
HSCAN | ✔️ | ✔️ | ✔️ | ✔️ |
HSET | ✔️ | ✔️ | ✔️ | ✔️ |
HSETNX | ✔️ | ✔️ | ✔️ | ✔️ |
HSTRLEN | ✔️ | ✔️ | ✔️ | ✔️ |
HVALS | ✔️ | ✔️ | ✔️ | ✔️ |
HyperLogLog
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
PFADD | ✔️ | ✔️ | ✔️ | ✔️ |
PFCOUNT | ⭕️ | ⭕️ | ✔️ | ✔️ |
PFMERGE | ⭕️ | ⭕️ | ✔️ | ✔️ |
Lists
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
BLPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BLMOVE | ⭕️ | ⭕️ | ✔️ | ✔️ |
BLMPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BRPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BRPOPLPUSH | ⭕️ | ⭕️ | ✔️ | ✔️ |
LINDEX | ✔️ | ✔️ | ✔️ | ✔️ |
LINSERT | ✔️ | ✔️ | ✔️ | ✔️ |
LLEN | ✔️ | ✔️ | ✔️ | ✔️ |
LMOVE | ⭕️ | ⭕️ | ✔️ | ✔️ |
LMPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
LPOP | ✔️ | ✔️ | ✔️ | ✔️ |
LPUSH | ✔️ | ✔️ | ✔️ | ✔️ |
LPUSHX | ✔️ | ✔️ | ✔️ | ✔️ |
LRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
LREM | ✔️ | ✔️ | ✔️ | ✔️ |
LSET | ✔️ | ✔️ | ✔️ | ✔️ |
LTRIM | ✔️ | ✔️ | ✔️ | ✔️ |
RPOP | ✔️ | ✔️ | ✔️ | ✔️ |
RPOPLPUSH | ⭕️ | ⭕️ | ✔️ | ✔️ |
RPUSH | ✔️ | ✔️ | ✔️ | ✔️ |
RPUSHX | ✔️ | ✔️ | ✔️ | ✔️ |
Pub/Sub
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
PSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
PUBLISH | ✔️ | ✔️ | ✔️ | ✔️ |
PUBSUB | ✔️ | ❌ | ✔️ | ✔️ |
PUBSUB HELP | ❌ | ❌ | ❌ | ❌ |
PUBSUB SHARDCHANNELS | ✔️ | ❌ | ✔️ | ✔️ |
PUBSUB SHARDNUMSUB | ✔️ | ❌ | ✔️ | ✔️ |
PUNSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
SPUBLISH | ✔️ | ✔️ | ✔️ | ✔️ |
SUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
SSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
SUNSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
UNSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
Scripting and functions
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
EVAL | ⭕️ | ❌ | ✔️ | ✔️ |
EVAL_RO | ⭕️ | ❌ | ✔️ | ✔️ |
EVALSHA | ⭕️ | ❌ | ✔️ | ✔️ |
EVALSHA_RO | ⭕️ | ❌ | ✔️ | ✔️ |
FCALL | ⭕️ | ❌ | ✔️ | ✔️ |
FCALL_RO | ⭕️ | ❌ | ✔️ | ✔️ |
FUNCTION DELETE | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION DUMP | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION FLUSH | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION HELP | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION KILL | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION LIST | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION LOAD | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION RESTORE | ✔️ | ❌ | ✔️ | ❌ |
FUNCTION STATS | ✔️ | ❌ | ✔️ | ❌ |
SCRIPT DEBUG | ❌ | ❌ | ❌ | ❌ |
SCRIPT EXISTS | ✔️ | ❌ | ✔️ | ❌ |
SCRIPT FLUSH | ✔️ | ❌ | ✔️ | ❌ |
SCRIPT KILL | ✔️ | ❌ | ✔️ | ❌ |
SCRIPT LOAD | ✔️ | ❌ | ✔️ | ❌ |
Server management
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
ACL CAT | ❌ | ❌ | ❌ | ❌ |
ACL DELUSER | ❌ | ❌ | ❌ | ❌ |
ACL DRYRUN | ❌ | ❌ | ❌ | ➖ |
ACL GENPASS | ❌ | ❌ | ❌ | ❌ |
ACL GETUSER | ❌ | ❌ | ❌ | ❌ |
ACL HELP | ❌ | ❌ | ❌ | ❌ |
ACL LIST | ❌ | ❌ | ❌ | ❌ |
ACL LOAD | ❌ | ❌ | ❌ | ❌ |
ACL LOG | ❌ | ❌ | ❌ | ❌ |
ACL SAVE | ❌ | ❌ | ❌ | ❌ |
ACL SETUSER | ❌ | ❌ | ❌ | ❌ |
ACL USERS | ❌ | ❌ | ❌ | ❌ |
ACL WHOAMI | ❌ | ❌ | ❌ | ❌ |
BGREWRITEAOF | ❌ | ❌ | ❌ | ❌ |
BGSAVE | ❌ | ❌ | ❌ | ❌ |
COMMAND | ✔️ | ❌ | ✔️ | ✔️ |
COMMAND COUNT | ✔️ | ❌ | ✔️ | ✔️ |
COMMAND DOCS | ✔️ | ❌ | ✔️ | ✔️ |
COMMAND GETKEYS | ✔️ | ❌ | ✔️ | ✔️ |
COMMAND GETKEYSANDFLAGS | ✔️ | ❌ | ✔️ | ✔️ |
COMMAND INFO | ✔️ | ❌ | ✔️ | ✔️ |
COMMAND LIST | ✔️ | ❌ | ✔️ | ✔️ |
CONFIG GET | ✔️ | ❌ | ✔️ | ✔️ |
CONFIG HELP | ❌ | ❌ | ❌ | ❌ |
CONFIG RESETSTAT | ❌ | ❌ | ❌ | ❌ |
CONFIG REWRITE | ❌ | ❌ | ❌ | ❌ |
CONFIG SET ①② | ✔️ | ❌ | ✔️ | ✔️ |
DBSIZE | ✔️ | ❌ | ✔️ | ✔️ |
DEBUG OBJECT | ❌ | ❌ | ❌ | ❌ |
DEBUG SEGFAULT | ❌ | ❌ | ❌ | ❌ |
FAILOVER | ❌ | ❌ | ❌ | ❌ |
FLUSHALL | ✔️ | ❌ | ✔️ | ✔️ |
FLUSHDB | ✔️ | ❌ | ✔️ | ✔️ |
INFO | ✔️ | ❌ | ✔️ | ✔️ |
LASTSAVE | ❌ | ❌ | ❌ | ❌ |
LATENCY DOCTOR | ❌ | ❌ | ❌ | ❌ |
LATENCY GRAPH | ❌ | ❌ | ❌ | ❌ |
LATENCY HELP | ❌ | ❌ | ❌ | ❌ |
LATENCY HISTOGRAM | ❌ | ❌ | ❌ | ❌ |
LATENCY HISTORY | ❌ | ❌ | ❌ | ❌ |
LATENCY LATEST | ❌ | ❌ | ❌ | ❌ |
LATENCY RESET | ❌ | ❌ | ❌ | ❌ |
LOLWUT | ✔️ | ❌ | ✔️ | ✔️ |
MEMORY DOCTOR | ✔️ | ❌ | ✔️ | ❌ |
MEMORY HELP | ✔️ | ❌ | ✔️ | ❌ |
MEMORY MALLOC-STATS | ✔️ | ❌ | ✔️ | ❌ |
MEMORY PURGE | ✔️ | ❌ | ✔️ | ❌ |
MEMORY STATS | ✔️ | ❌ | ✔️ | ❌ |
MEMORY USAGE | ✔️ | ❌ | ✔️ | ❌ |
MODULE LIST | ❌ | ❌ | ❌ | ❌ |
MODULE LOAD | ❌ | ❌ | ❌ | ❌ |
MODULE LOADEX | ❌ | ❌ | ❌ | ❌ |
MODULE UNLOAD | ❌ | ❌ | ❌ | ❌ |
MONITOR | ✔️ | ❌ | ✔️ | ❌ |
PSYNC | ❌ | ❌ | ❌ | ❌ |
REPLICAOF | ❌ | ❌ | ❌ | ❌ |
ROLE ② | ✔️ | ❌ | ✔️ | ❌ |
SAVE | ❌ | ❌ | ❌ | ❌ |
SHUTDOWN | ❌ | ❌ | ❌ | ❌ |
SLAVEOF | ❌ | ❌ | ❌ | ❌ |
SLOWLOG | ✔️ | ❌ | ✔️ | ✔️ |
SLOWLOG HELP | ✔️ | ❌ | ✔️ | ✔️ |
SLOWLOG RESET | ✔️ | ❌ | ✔️ | ✔️ |
SWAPDB | ✔️ | ❌ | ✔️ | ✔️ |
SYNC | ❌ | ❌ | ❌ | ❌ |
TIME | ✔️ | ❌ | ✔️ | ✔️ |
Sentinel
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
SENTINEL sentinels ② | ✔️ | ❌ | ✔️ | ❌ |
SENTINEL get-master-addr-by-name ② | ✔️ | ❌ | ✔️ | ❌ |
Sets
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
SADD | ✔️ | ✔️ | ✔️ | ✔️ |
SCARD | ✔️ | ✔️ | ✔️ | ✔️ |
SDIFF | ✔️ | ⭕️ | ✔️ | ✔️ |
SDIFFSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
SINTER | ✔️ | ⭕️ | ✔️ | ✔️ |
SINTERCARD | ✔️ | ⭕️ | ✔️ | ✔️ |
SINTERSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
SISMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
SMEMBERS | ✔️ | ✔️ | ✔️ | ✔️ |
SMISMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
SMOVE | ✔️ | ⭕️ | ✔️ | ✔️ |
SPOP | ✔️ | ✔️ | ✔️ | ✔️ |
SRANDMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
SREM | ✔️ | ✔️ | ✔️ | ✔️ |
SSCAN | ✔️ | ✔️ | ✔️ | ✔️ |
SUNION | ✔️ | ⭕️ | ✔️ | ✔️ |
SUNIONSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
Sorted sets
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
BZMPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BZPOPMAX | ⭕️ | ⭕️ | ✔️ | ✔️ |
BZPOPMIN | ⭕️ | ⭕️ | ✔️ | ✔️ |
ZADD | ✔️ | ✔️ | ✔️ | ✔️ |
ZCARD | ✔️ | ✔️ | ✔️ | ✔️ |
ZCOUNT | ✔️ | ✔️ | ✔️ | ✔️ |
ZDIFF | ✔️ | ⭕️ | ✔️ | ✔️ |
ZDIFFSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
ZINCRBY | ✔️ | ✔️ | ✔️ | ✔️ |
ZINTER | ✔️ | ✔️ | ✔️ | ✔️ |
ZINTERCARD | ✔️ | ⭕️ | ✔️ | ✔️ |
ZINTERSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
ZLEXCOUNT | ✔️ | ✔️ | ✔️ | ✔️ |
ZMPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
ZMSCORE | ✔️ | ✔️ | ✔️ | ✔️ |
ZPOPMAX | ✔️ | ✔️ | ✔️ | ✔️ |
ZPOPMIN | ✔️ | ✔️ | ✔️ | ✔️ |
ZRANDMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
ZRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
ZRANGEBYLEX | ✔️ | ✔️ | ✔️ | ✔️ |
ZRANGEBYSCORE | ✔️ | ✔️ | ✔️ | ✔️ |
ZRANGESTORE | ⭕️ | ⭕️ | ✔️ | ✔️ |
ZRANK | ✔️ | ✔️ | ✔️ | ✔️ |
ZREM | ✔️ | ✔️ | ✔️ | ✔️ |
ZREMRANGEBYLEX | ✔️ | ✔️ | ✔️ | ✔️ |
ZREMRANGEBYRANK | ✔️ | ✔️ | ✔️ | ✔️ |
ZREMRANGEBYSCORE | ✔️ | ✔️ | ✔️ | ✔️ |
ZREVRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
ZREVRANGEBYLEX | ✔️ | ✔️ | ✔️ | ✔️ |
ZREVRANGEBYSCORE | ✔️ | ✔️ | ✔️ | ✔️ |
ZREVRANK | ✔️ | ✔️ | ✔️ | ✔️ |
ZSCAN | ✔️ | ✔️ | ✔️ | ✔️ |
ZSCORE | ✔️ | ✔️ | ✔️ | ✔️ |
ZUNION | ✔️ | ⭕️ | ✔️ | ✔️ |
ZUNIONSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
Streams
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
XACK | ✔️ | ✔️ | ✔️ | ✔️ |
XADD | ✔️ | ✔️ | ✔️ | ✔️ |
XAUTOCLAIM | ✔️ | ✔️ | ✔️ | ✔️ |
XCLAIM | ✔️ | ✔️ | ✔️ | ✔️ |
XDEL | ✔️ | ✔️ | ✔️ | ✔️ |
XGROUP | ✔️ | ✔️ | ✔️ | ✔️ |
XGROUP CREATECONSUMER | ✔️ | ✔️ | ✔️ | ✔️ |
XINFO | ✔️ | ✔️ | ✔️ | ✔️ |
XLEN | ✔️ | ✔️ | ✔️ | ✔️ |
XPENDING | ✔️ | ✔️ | ✔️ | ✔️ |
XRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
XREAD | ⭕️ | ⭕️ | ✔️ | ✔️ |
XREADGROUP | ⭕️ | ⭕️ | ✔️ | ✔️ |
XREVRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
XTRIM | ✔️ | ✔️ | ✔️ | ✔️ |
Strings
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
APPEND | ✔️ | ✔️ | ✔️ | ✔️ |
DECR | ✔️ | ✔️ | ✔️ | ✔️ |
DECRBY | ✔️ | ✔️ | ✔️ | ✔️ |
GET | ✔️ | ✔️ | ✔️ | ✔️ |
GETDEL | ✔️ | ✔️ | ✔️ | ✔️ |
GETEX | ✔️ | ✔️ | ✔️ | ✔️ |
GETRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
GETSET | ✔️ | ✔️ | ✔️ | ✔️ |
LCS | ✔️ | ⭕️ | ✔️ | ✔️ |
INCR | ✔️ | ✔️ | ✔️ | ✔️ |
INCRBY | ✔️ | ✔️ | ✔️ | ✔️ |
INCRBYFLOAT | ✔️ | ✔️ | ✔️ | ✔️ |
MGET | ✔️ | ⭕️ | ✔️ | ✔️ |
MSET | ✔️ | ⭕️ | ✔️ | ✔️ |
MSETNX | ⭕️ | ⭕️ | ✔️ | ✔️ |
PSETEX | ✔️ | ✔️ | ✔️ | ✔️ |
SET | ✔️ | ✔️ | ✔️ | ✔️ |
SETEX | ✔️ | ✔️ | ✔️ | ✔️ |
SETNX | ✔️ | ✔️ | ✔️ | ✔️ |
SETRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
STRALGO | ❌ | ❌ | ❌ | ❌ |
STRLEN | ✔️ | ✔️ | ✔️ | ✔️ |
Transactions
Command | Cluster architecture | Whether the command can be run in transactions within cluster instances | Read/write splitting architecture | Whether the command can be run in transactions within read/write splitting instances |
DISCARD | ✔️ | ✔️ | ✔️ | ✔️ |
EXEC | ✔️ | ✔️ | ✔️ | ✔️ |
MULTI | ✔️ | ❌ | ✔️ | ❌ |
UNWATCH | ✔️ | ❌ | ✔️ | ✔️ |
WATCH | ✔️ | ❌ | ✔️ | ❌ |