主从节点实例与集群的区别

云数据库 SCS for Redis支持创建主从节点实例和集群两种形态的产品,主要区别在于支持的容量、以及支持的命令有所差异。

特性主从节点实例集群
容量最大64G最大暂支持256G(可以提工单修改限制)
功能兼容redis原生协议遍历、事务、订阅等相关功能受限
适用范围主从节点实例适用于使用容量小,且使用redis功能较多的开发者。集群适用于业务增长量较快,业务规模较大的企业级用户。
版本Redis 3.2.8Redis 2.6.16

主从节点实例不支持的命令

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将无法找到,最终操作的正确性无法保证。

对于集群实例,保证某些数据会分布在同一个节点上方法如下:
在key中使用{}来指定key值,例如:{key1}123,456{key1}都会解析到同一节点上。集群会识别key里的第一对{},如果{}内的字符串相同,则数据就会落在同一个节点上。