Cluter集群(直連模式)命令限制
Cluster集群實例支持多個Key的命令,但要求保持與開源Redis Cluster的行為一致,不支持跨SLOT訪問REDIS命令。具體來說如下:
1.不支持多db,只能select 0。不支持select其他db。
2.要求單個命令操作的KEY都分布在同一個SLOT上。為了保證這個效果,建議可以使用hash tag等。
3.支持事務和PUB/SUB訂閱,但要求相關操作的KEY都在同一個SLOT上。
表1 Cluster集群實例受限使用的Redis命令:
命令類型 命令 Strings MSETNX
Set
SINTER SINTERSTORE SUNION SUNIONSTORE SDIFF SDIFFSTORE SMOVE Sortedset ZUNIONSTORE ZINTERSTORE HyperLogLog PFCOUNT PFMERGE Keys RENAME RENAMENX BITOP RPOPLPUSH
經典版集群命令限制
經典版集群模有如下的不同。
1.支持多DB,可以SELECT命令。
2.支持MSET,MSET等跨SLOT的多個KEY命令支持。 具體參考下面的表2。
3.不支持CLUSTER KEYSLOT以外CLUSTER的命令。
4.Client KILL和CLIENT LIST命令只能操作當前代理的客戶端信息,不代表整個實例的。
5.代理模式下的事務、腳本執行都是按slot拆分發到對應節點執行的,同一個slot的事務不會被拆分,但不能保證跨SLOT事務一致性。
表2 代理模式集群支持多SLOT命令:
命令類型 命令 SCRIPTING SCRIPT EVAL EVALSHA GENERIC SCAN DEL UNLINK DBSIZE STRING MSET MGET SET SUNION SUNIONSTORE SDIFF SDIFFSTORE SINTER SINTERSTORE: PUB/SUB SUBSCRIBE PSUBSCRIBE PUBLISH UNSUBSCRIBE PUNSUBSCRIBE PUBSUB?CHANNELS? PUBSUB??NUMPA PUBSUB?NUMSU STREAM XGROU XINFO XREAD XREADGROUP
Proxy集群命令限制
1.不支持多db,只能select 0。不支持select其他db.
2.支持事務和PUB/SUB訂閱,但要求相關操作的KEY都在同一個SLOT上。
3.PUB/SUB訂閱不支持redis內部事件的訂閱。不支持keyspace事件的訂閱
以下內容為便于瀏覽和內容表達,本文的表格約定使用下述注釋:
- ??表示Proxy支持該命令,但存在限制,請確保命令所要操作的Key都分布在1個Slot中,例如使用Hash tag等。
- ?表示Proxy不支持該命令。
- 數字標記①:為兼容某些客戶端框架,該命令僅返回
OK或空結果,不會真正執行。 - 數字標記②:該請求由Proxy直接處理返回,不受Redis DB版本限制。
類型 命令
Proxy集群
Bitmap
BITOP
??
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
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
?? MIGRATE
? MOVE
? RENAME
?? RENAMENX
?? SORT
?? WAIT
? WAITOF ? Geospatial indices
GEORADIUS
?? GEORADIUSBYMEMBER
?? GEOSEARCHSTORE
?? HyperLogLog
PFCOUNT
?? PFDEBUG ? PFMERGE
?? PFSELFTEST ? Lists
BLPOP
?? BLMOVE
?? BLMPOP
?? BRPOP
?? BRPOPLPUSH
?? LMOVE
?? LMPOP
?? RPOPLPUSH
?? Pub/Sub
PUBSUB HELP
? SSUBSCRIBE
?? SUNSUBSCRIBE
?? Scripting and Functions
EVAL
?? EVAL_RO
?? EVALSHA
?? EVALSHA_RO
?? FCALL
?? FCALL_RO
?? SCRIPT DEBUG
? 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
? CONFIG HELP
? CONFIG RESETSTAT
? CONFIG REWRITE
? CONFIG SET
? DEBUG OBJECT
? DEBUG SEGFAULT
? FAILOVER
? LASTSAVE
? LATENCY DOCTOR
? LATENCY GRAPH
? LATENCY HELP
? LATENCY HISTOGRAM
? LATENCY HISTORY
? LATENCY LATEST
? LATENCY RESET
? 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
? SWAPDB
? SYNC
? Sentinel
SENTINEL sentinels ②
? SENTINEL get-master-addr-by-name ②
? Sorted Set
BZMPOP
?? BZPOPMAX
?? BZPOPMIN
?? ZDIFF
?? ZDIFFSTORE
?? ZINTER
?? ZINTERSTORE
?? ZMPOP
?? ZRANGESTORE
?? ZUNION
?? ZUNIONSTORE
?? Stream
XREAD
?? XREADGROUP
?? XSETID ? String
LCS ?? MSETNX
?? Transactions
WATCH
??
讀寫分離命令限制
以下內容為便于瀏覽和內容表達,本文的表格約定使用下述注釋:
- ?表示Proxy不支持該命令。
- 數字標記①:為兼容某些客戶端框架,該命令僅返回
OK或空結果,不會真正執行。 - 數字標記②:該請求由Proxy直接處理返回,不受Redis DB版本限制。
類型 命令
讀寫分離
Connection management
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
MIGRATE
? WAIT
? WAITOF ? HyperLogLog PFDEBUG ? PFSELFTEST ? Pub/Sub
PUBSUB HELP
? Scripting and Functions
SCRIPT DEBUG
? 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
? CONFIG HELP
? CONFIG RESETSTAT
? CONFIG REWRITE
? CONFIG SET
? DEBUG OBJECT
? DEBUG SEGFAULT
? FAILOVER
? LASTSAVE
? LATENCY DOCTOR
? LATENCY GRAPH
? LATENCY HELP
? LATENCY HISTOGRAM
? LATENCY HISTORY
? LATENCY LATEST
? LATENCY RESET
? 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
? SWAPDB
? SYNC
? Sentinel
SENTINEL sentinels ②
? SENTINEL get-master-addr-by-name ②
? Stream XSETID ?