相对标准架构,集群架构与读写分离架构实例在原生Redis命令的支持上有一定的区别,例如禁用某些命令、单个命令不支持访问跨Slot的Key等,请在使用过程中了解并遵守相应的规范。
集群架构命令限制
Tair集群架构实例兼容不同的Redis版本,各版本整体的命令支持情况请参见Tair命令支持。
集群架构支持直连模式与代理模式,其命令限制有所不同:
集群架构直连模式
由于主流客户端(例如Jedis客户端)的自身限制,不支持SELECT命令。
如需执行涉及多Key的命令,请确保命令操作的Key都分布在同一个Slot中,例如使用Hash tag等。
在集群架构直连模式中执行事务时,要求与开源Redis Cluster行为一致,即严格要求事务所操作的Key均在同一Slot。
集群架构代理模式
在集群架构直连模式的基础上,代理节点额外不支持WAIT、HELLO、CLIENT ID等命令,但支持SELECT命令,也支持对如下命令执行跨Slot的多Key操作:DEL、EXISTS等,详细介绍请参见代理模式(Proxy)支持的命令列表。
CLIENT KILL命令目前支持的格式为:CLIENT KILL <ip:port>
和CLIENT KILL ADDR <ip:port>
。
执行CLIENT LIST命令会列出所有连接到该代理节点的连接信息,返回结果与Redis原生命令有所不同,说明如下:
id
、age
、idle
、addr
、fd
、name
、db
、multi
、omem
、cmd
字段和原生Redis的含义一致。
sub
、psub
在代理节点上没有区分,统一为1或0。
qbuf
、qbuf-free
、obl
和oll
字段目前没有具体意义。
关于事务的限制:
当事务内所有的Key都在同一个Slot时,事务可以正常执行,且遵循事务语意。
当不满足事务内所有的Key都在同一个Slot,但满足每个命令内部的Key都在同一个Slot时,事务可以正常执行,属于同一个Slot的命令之间遵循事务语意,属于不同Slot的命令之间不保证事务语意。
当事务不满足同一个命令内的Key都属于同一个Slot时,命令无法执行。
部分没有Key的命令不支持在事务中执行,详情查看代理模式(Proxy)支持的命令列表。
为便于日常管理和运维,集群架构代理模式实例支持多个自研的命令,更多信息请参见阿里云自研的Tair命令。
除此之外,Redis Cluster对使用Lua脚本增加了一些限制,Tair集群架构在此基础上存在额外限制,更多信息请参见集群中Lua脚本的限制。
读写分离架构命令限制
Tair读写分离架构实例兼容不同的Redis版本,各版本整体的命令支持情况请参见Tair命令支持。
代理模式(Proxy)支持的命令列表
以下内容适用于集群架构代理模式和读写分离架构,为便于浏览和内容表达,本文的表格约定使用下述注释:
✔️表示Proxy支持该命令,若该命令支持多Key,则表示支持跨Slot执行该命令。
⭕️表示Proxy支持该命令,但存在限制,请确保命令所要操作的Key都分布在1个Slot中,例如使用Hash tag等。
❌表示Proxy不支持该命令。
数字标记①:为兼容某些客户端框架,该命令仅返回OK
或空结果,不会真正执行。
数字标记②:该请求由Proxy直接处理返回,不受Redis DB版本限制。
Bitmap
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
BITCOUNT | ✔️ | ✔️ | ✔️ | ✔️ |
BITFIELD | ✔️ | ✔️ | ✔️ | ✔️ |
BITFIELD_RO | ❌ | ❌ | ❌ | ❌ |
BITOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BITPOS | ✔️ | ✔️ | ✔️ | ✔️ |
GETBIT | ✔️ | ✔️ | ✔️ | ✔️ |
SETBIT | ✔️ | ✔️ | ✔️ | ✔️ |
Cluster management
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
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
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
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
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
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
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
GEOADD | ✔️ | ✔️ | ✔️ | ✔️ |
GEODIST | ✔️ | ✔️ | ✔️ | ✔️ |
GEOHASH | ✔️ | ✔️ | ✔️ | ✔️ |
GEOPOS | ✔️ | ✔️ | ✔️ | ✔️ |
GEORADIUS | ⭕️ | ⭕️ | ✔️ | ✔️ |
GEORADIUSBYMEMBER | ⭕️ | ⭕️ | ✔️ | ✔️ |
GEOSEARCH | ✔️ | ✔️ | ✔️ | ✔️ |
GEOSEARCHSTORE | ⭕️ | ⭕️ | ✔️ | ✔️ |
Hash
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
HDEL | ✔️ | ✔️ | ✔️ | ✔️ |
HEXISTS | ✔️ | ✔️ | ✔️ | ✔️ |
HGET | ✔️ | ✔️ | ✔️ | ✔️ |
HGETALL | ✔️ | ✔️ | ✔️ | ✔️ |
HINCRBY | ✔️ | ✔️ | ✔️ | ✔️ |
HINCRBYFLOAT | ✔️ | ✔️ | ✔️ | ✔️ |
HKEYS | ✔️ | ✔️ | ✔️ | ✔️ |
HLEN | ✔️ | ✔️ | ✔️ | ✔️ |
HMGET | ✔️ | ✔️ | ✔️ | ✔️ |
HMSET | ✔️ | ✔️ | ✔️ | ✔️ |
HRANDFIELD | ✔️ | ✔️ | ✔️ | ✔️ |
HSCAN | ✔️ | ✔️ | ✔️ | ✔️ |
HSET | ✔️ | ✔️ | ✔️ | ✔️ |
HSETNX | ✔️ | ✔️ | ✔️ | ✔️ |
HSTRLEN | ✔️ | ✔️ | ✔️ | ✔️ |
HVALS | ✔️ | ✔️ | ✔️ | ✔️ |
HyperLogLog
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
PFADD | ✔️ | ✔️ | ✔️ | ✔️ |
PFCOUNT | ⭕️ | ⭕️ | ✔️ | ✔️ |
PFMERGE | ⭕️ | ⭕️ | ✔️ | ✔️ |
Lists
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
BLPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BLMOVE | ⭕️ | ⭕️ | ✔️ | ✔️ |
BLMPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BRPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
BRPOPLPUSH | ⭕️ | ⭕️ | ✔️ | ✔️ |
LINDEX | ✔️ | ✔️ | ✔️ | ✔️ |
LINSERT | ✔️ | ✔️ | ✔️ | ✔️ |
LLEN | ✔️ | ✔️ | ✔️ | ✔️ |
LMOVE | ⭕️ | ⭕️ | ✔️ | ✔️ |
LMPOP | ⭕️ | ⭕️ | ✔️ | ✔️ |
LPOP | ✔️ | ✔️ | ✔️ | ✔️ |
LPUSH | ✔️ | ✔️ | ✔️ | ✔️ |
LPUSHX | ✔️ | ✔️ | ✔️ | ✔️ |
LRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
LREM | ✔️ | ✔️ | ✔️ | ✔️ |
LSET | ✔️ | ✔️ | ✔️ | ✔️ |
LTRIM | ✔️ | ✔️ | ✔️ | ✔️ |
RPOP | ✔️ | ✔️ | ✔️ | ✔️ |
RPOPLPUSH | ⭕️ | ⭕️ | ✔️ | ✔️ |
RPUSH | ✔️ | ✔️ | ✔️ | ✔️ |
RPUSHX | ✔️ | ✔️ | ✔️ | ✔️ |
Pub/Sub
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
PSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
PUBLISH | ✔️ | ✔️ | ✔️ | ✔️ |
PUBSUB | ✔️ | ❌ | ✔️ | ✔️ |
PUBSUB HELP | ❌ | ❌ | ❌ | ❌ |
PUBSUB SHARDCHANNELS | ✔️ | ❌ | ✔️ | ✔️ |
PUBSUB SHARDNUMSUB | ✔️ | ❌ | ✔️ | ✔️ |
PUNSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
SPUBLISH | ✔️ | ✔️ | ✔️ | ✔️ |
SUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
SSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
SUNSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
UNSUBSCRIBE | ✔️ | ❌ | ✔️ | ❌ |
Scripting and Functions
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
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
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
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
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
SENTINEL sentinels ② | ✔️ | ❌ | ✔️ | ❌ |
SENTINEL get-master-addr-by-name ② | ✔️ | ❌ | ✔️ | ❌ |
Set
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
SADD | ✔️ | ✔️ | ✔️ | ✔️ |
SCARD | ✔️ | ✔️ | ✔️ | ✔️ |
SDIFF | ✔️ | ⭕️ | ✔️ | ✔️ |
SDIFFSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
SINTER | ✔️ | ⭕️ | ✔️ | ✔️ |
SINTERCARD | ✔️ | ⭕️ | ✔️ | ✔️ |
SINTERSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
SISMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
SMEMBERS | ✔️ | ✔️ | ✔️ | ✔️ |
SMISMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
SMOVE | ✔️ | ⭕️ | ✔️ | ✔️ |
SPOP | ✔️ | ✔️ | ✔️ | ✔️ |
SRANDMEMBER | ✔️ | ✔️ | ✔️ | ✔️ |
SREM | ✔️ | ✔️ | ✔️ | ✔️ |
SSCAN | ✔️ | ✔️ | ✔️ | ✔️ |
SUNION | ✔️ | ⭕️ | ✔️ | ✔️ |
SUNIONSTORE | ✔️ | ⭕️ | ✔️ | ✔️ |
Sorted Set
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
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 | ✔️ | ⭕️ | ✔️ | ✔️ |
Stream
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
XACK | ✔️ | ✔️ | ✔️ | ✔️ |
XADD | ✔️ | ✔️ | ✔️ | ✔️ |
XAUTOCLAIM | ✔️ | ✔️ | ✔️ | ✔️ |
XCLAIM | ✔️ | ✔️ | ✔️ | ✔️ |
XDEL | ✔️ | ✔️ | ✔️ | ✔️ |
XGROUP | ✔️ | ✔️ | ✔️ | ✔️ |
XGROUP CREATECONSUMER | ✔️ | ✔️ | ✔️ | ✔️ |
XINFO | ✔️ | ✔️ | ✔️ | ✔️ |
XLEN | ✔️ | ✔️ | ✔️ | ✔️ |
XPENDING | ✔️ | ✔️ | ✔️ | ✔️ |
XRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
XREAD | ⭕️ | ⭕️ | ✔️ | ✔️ |
XREADGROUP | ⭕️ | ⭕️ | ✔️ | ✔️ |
XREVRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
XTRIM | ✔️ | ✔️ | ✔️ | ✔️ |
String
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
APPEND | ✔️ | ✔️ | ✔️ | ✔️ |
DECR | ✔️ | ✔️ | ✔️ | ✔️ |
DECRBY | ✔️ | ✔️ | ✔️ | ✔️ |
GET | ✔️ | ✔️ | ✔️ | ✔️ |
GETDEL | ✔️ | ✔️ | ✔️ | ✔️ |
GETEX | ✔️ | ✔️ | ✔️ | ✔️ |
GETRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
GETSET | ✔️ | ✔️ | ✔️ | ✔️ |
LCS | ✔️ | ⭕️ | ✔️ | ✔️ |
INCR | ✔️ | ✔️ | ✔️ | ✔️ |
INCRBY | ✔️ | ✔️ | ✔️ | ✔️ |
INCRBYFLOAT | ✔️ | ✔️ | ✔️ | ✔️ |
MGET | ✔️ | ⭕️ | ✔️ | ✔️ |
MSET | ✔️ | ⭕️ | ✔️ | ✔️ |
MSETNX | ⭕️ | ⭕️ | ✔️ | ✔️ |
PSETEX | ✔️ | ✔️ | ✔️ | ✔️ |
SET | ✔️ | ✔️ | ✔️ | ✔️ |
SETEX | ✔️ | ✔️ | ✔️ | ✔️ |
SETNX | ✔️ | ✔️ | ✔️ | ✔️ |
SETRANGE | ✔️ | ✔️ | ✔️ | ✔️ |
STRALGO | ❌ | ❌ | ❌ | ❌ |
STRLEN | ✔️ | ✔️ | ✔️ | ✔️ |
Transactions
命令 | 集群架构 | 是否允许在集群架构的事务中执行 | 读写分离架构 | 是否允许在读写分离架构的事务中执行 |
DISCARD | ✔️ | ✔️ | ✔️ | ✔️ |
EXEC | ✔️ | ✔️ | ✔️ | ✔️ |
MULTI | ✔️ | ❌ | ✔️ | ❌ |
UNWATCH | ✔️ | ❌ | ✔️ | ✔️ |
WATCH | ✔️ | ❌ | ✔️ | ❌ |