更新时间:2024-07-29 GMT+08:00

Redis实例类型差异

Redis单机、主备、Proxy集群和Cluster集群实例,在特性支持、特性限制以及命令限制有部分差异,具体请查看表1

表1 不同实例类型的差异说明

对比项

单机/主备

Proxy集群

Cluster集群

兼容Redis版本

兼容开源Redis 3.0、4.0、5.0、6.0。可在创建实例时选择版本号。

兼容开源Redis 3.0版本。

兼容开源Redis 4.0/5.0版本。可在创建实例时选择版本号。

特性支持

  • 支持event notify。
  • 支持pipeline。
  • 支持pipeline、mset、mget。
  • 支持scan、keys、slowlog。
  • 支持发布订阅。
  • 支持event notify。
  • 支持brpop、blpop、brpoplpush。
  • 支持发布订阅。

特性限制

仅单机实例不支持数据持久化及备份与恢复的功能。

  • lua脚本受限使用,所有的key必须在同一个slot,否则会报错,建议使用hashtag技术。
  • 支持多个key的命令中,部分命令要求所有key必须属于同一个slot,否则会报错,建议使用hashtag技术。具体限制多个key必须属于同一slot的命令,请参考Proxy集群多Key命令说明
  • 不支持event notify用法。
  • lua脚本受限使用,所有的key必须在同一个slot,建议使用hashtag技术。
  • 需要客户端SDK支持redis cluster协议,需要能够处理"-MOVED"响应。
  • 使用pipeline、mset/mget模式时,所有key必须属于同一个slot,否则报错,建议使用hashtag技术。
  • 使用event notify时,需要建立与每个redis-server的连接,分别处理每个连接上的事件。
  • 执行scan、keys等遍历类或者全局类命令时,需要对每个redis-server分别执行该命令。

客户端协议

使用传统Redis客户端即可。

使用传统Redis客户端即可,不需要支持Redis Cluster协议。

需要客户端支持Redis Cluster协议。

命令限制

不支持的Redis命令,请参考开源命令兼容性

不支持的Redis命令,请参考开源命令兼容性

不支持的Redis命令,请参考开源命令兼容性

副本数

单机实例为单副本,只有一个节点。

主备实例默认为双副本,默认为一主一从的架构。

在创建Redis 4.0、5.0主备实例时,支持自定义副本数,形成一主多从的架构。目前Redis 3.0、Redis 6.0主备不支持自定义副本数。

每个集群分片都为双副本,但不支持为分片新增副本,每个分片是一主一从的架构。

每个集群分片默认为双副本,支持自定义副本数,每个分片可以是一主多从的架构。在创建实例时,也可以定义为单副本,单副本表示实例只有主节点,无法保障数据高可靠。