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命令:
命令类型 命令 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
经典版集群命令限制
经典版集群模有如下的不同。
1.支持多DB,可以SELECT命令。
2.支持MSET,MSET等跨SLOT的多个KEY命令支持。 具体参考下面的表2。
3.不支持CLUSTER KEYSLOT以外CLUSTER的命令。
4.Client KILL和CLIENT LIST命令只能操作当前代理的客户端信息,不代表整个实例的。
5.代理模式下的事务、脚本执行都是按slot拆分发到对应节点执行的,同一个slot的事务不会被拆分,但不能保证跨SLOT事务一致性。
表2 代理模式集群支持多SLOT命令:
命令类型 命令 Strings MSETNX Set SINTER SINTERSTORE SUNION SUNIONSTORE SDIFF SDIFFSTORE SMOVE Sortedset ZUNIONSTORE ZINTERSTORE HyperLogLog PFCOUNT PFMERGE Keys RENAME RENAMENX BITOP RPOPLPUSH