主从节点实例与集群的区别
云数据库 Redis 支持标准版实例和集群版实例两种形态的产品,主要区别在于支持的容量、以及支持的命令有所差异,具体差异如下:
特性 | 标准版 | 集群版 |
功能 | 兼容 Redis 原生协议 | 遍历、事务、订阅等相关功能受限 |
适用范围 | 主从节点实例适用于使用容量小,且使用 Redis 功能较多的开发者 | 集群适用于业务增长量较快,业务规模较大的企业级用户 |
版本 | Redis 4.0/3.2 | Redis 3.2 |
主从节点实例不支持的命令
BGREWRITEAOF、BGSAVE、CLIENT GETNAME、CLIENT KILL、CLIENT LIST、CLIENT SETNAME、CONFIG GET、CONFIG RESETSTAT、CONFIG REWRITE、CONFIG SET、DEBUG OBJECT、DEBUG SEGFAULT、LASTSAVE、MONITOR、SAVE、SYNC、COMMAND、COMMAND COUNT、COMMAND GETKEYS、COMMAND INFO
集群不支持的命令
Key 和 String 相关操作
KEYS、MIGRATE、MOVE、OBJECT、RANDOMKEY、RENAME、RENAMENX、SORT、SCAN
Hash 表相关操作
HSCAN
Set 集合相关操作
SSCAN
Pub/Sub
PSUBSCRIBE、PUBLISH、PUBSUB、PUNSUBSCRIBE、SUBSCRIBE、UNSUBSCRIBE
Transaction
DISCARD、EXEC、MULTI、UNWATCH、WATCH
Script
SCRIPT EXISTS、SCRIPT FLUSH、SCRIPT KILL、SCRIPT LOAD
List
BLPOP、BRPOP、BRPOPLPUSH
SortedSet
ZSCAN
HyperLogLog
PFADD、PFCOUNT、PFMERGE
Connection
ECHO、QUIT、SELECT
Server
BGREWRITEAOF、BGSAVE、CLIENT GETNAME、CLIENT KILL、CLIENT LIST、CLIENT SETNAME、CONFIG GET、CONFIG RESETSTAT、CONFIG REWRITE、CONFIG SET、DBSIZE、DEBUG OBJECT、DEBUG SEGFAULT、INFO、LASTSAVE、MONITOR、PSYNC、SAVE、SHUTDOWN、SLAVEOF、SLOWLOG、SYNC、TIME
注意事项
Redis 集群会根据 Key 进行了 Hash 分区,不同的 Key 可能 Hash 到了不同节点上,即不同的 Redis上。
- 对于操作多个集合的操作,需要保证这些集合的 Hash 后的节点处于同一个节点,如 SUNION,SUNIONSTORE,SDIFF,SDIFFSTORE,SINTER,SINTERSTORE,SMOVE。
- 对于操作多个列表的操作,需要保证这些列表的 Hash 后的节点处于同一个节点,如 RPOPLPUSH。
- 对于操作多个有序集的操作,需要保证这些有序集的 Hash 后的节点处于同一个节点,如 ZUNIONSTORE。
- 对于脚本操作,需要保证多个 Key 的 Hash 后的节点处于同一个节点,如 EVAL,EVALSHA。
如果不能保证同一节点,后端将会发往第一个 Key 所在的节点。因此,其他节点对应的 Key 将无法找到,最终操作的正确性无法保证。