| 命令 | Redis 5.0 | Redis 6.2 | Redis 7.0/Valkey 8.0 | 自建直连模式 | 建议 |
| del | 集群版支持跨 Slot/跨节点命令操作,由 Proxy 层自动完成 Key 分发与结果聚合。 | | | 跨 Slot 和跨节点都不支持 | 正常使用 |
| unlink | | | | | 正常使用 |
| exists | | | | | 正常使用 |
| mset | | | | | 正常使用 |
| mget | | | | | 正常使用注意:Proxy 针对命令 mget 的检验返回不符合预期将报错。-ERR invalid return data。 |
| zunionstore | | | | | 由于跨 Slot 操作需 Proxy 额外处理命令分发与结果聚合,建议遵循 Redis 社区规范,确保关联 Key 位于同一 Slot 以提升性能。 |
| randomkey | 集群版 randomkey 命令随机转发到后端不同节点。 | | | 只在当前连接的节点执行 | 建议仅在明确需要当前分片随机 Key 时使用,否则应改用 SCAN 或其他替代方案。 |
| keys | 集群版 keys 命令默认并行在所有 Master 节点执行,由 Proxy 层聚合各分片结果后统一返回客户端。集群版支持通过keys [@shard_id]语法指定分片执行,此时仅透传目标分片的执行结果,不进行跨节点聚合。标准版 keys 命令直接透传到唯一 Master 节点执行,无分片聚合过程,响应行为与原生 Redis 一致。 | | | 只在当前连接的节点执行 | 请根据业务需求选择 keys 命令执行方式:指定分片执行(返回单分片数据)或全分片执行(返回聚合数据)。执行方式分别如下:KEYS {hash_tag}patternKEYS pattern NODEID |
| scan | 集群版 scan 命令默认轮询所有 Master 节点。标准版 scan 命令直接透传到 Master 节点。集群版/标准版均支持指定后端节点执行(如SCAN 0 @shard2)。 | | | 只在当前连接的节点执行 | 请根据业务选择 scan 命令执行方式:指定分片执行(返回单分片数据)或全分片执行(返回聚合数据)。执行方式分别如下:SCAN cursor [MATCH {hash_tag}pattern] [COUNT count]SCAN cursor [MATCH pattern] [COUNT count] NODEID |
| dbsize | 集群版 dbsize 命令默认在所有 Master 节点执行,由 Proxy 层聚合各分片结果后统一返回客户端。集群版支持通过dbsize [@shard_id]语法指定分片执行,此时仅透传目标分片的执行结果,不进行跨节点聚合。标准版 dbsize 命令直接透传到唯一 Master 节点执行,无分片聚合过程,响应行为与原生 Redis 一致。 | | | 只在当前连接的节点执行 | 请根据业务需求选择 dbsize 命令执行方式:指定分片执行(返回单分片数据)或全分片执行(返回聚合数据)。执行方式分别如下:DBSIZEDBSIZE NODEID |
| flushdb | 集群版 flushdb 命令默认在所有 Master 节点执行,由 Proxy 层聚合各分片结果后统一返回客户端。集群版支持通过flushdb [@shard_id]语法指定分片执行,此时仅透传目标分片的执行结果,不进行跨节点聚合。6.2与7.0版本支持 ASYNC、SYNC 选项,默认为ASYNC。 | | | 只在当前连接的节点执行 | 请根据业务需求选择 flushdb 命令执行方式:指定分片执行(返回单分片数据)或全分片执行(返回聚合数据)。命令使用如下:FLUSHDBFLUSHDB SYNCFLUSHDB ASYNCFLUSHDB SYNC NODEID FLUSHDB ASYNC NODEID |
| flushall | 集群版 flushall 命令默认在所有 Master 节点执行,由 Proxy 层聚合各分片结果后统一返回客户端。集群版支持通过flushall [@shard_id]语法指定分片执行,此时仅透传目标分片的执行结果,不进行跨节点聚合。6.2与7.0版本支持 ASYNC、SYNC 选项,默认为ASYNC。 | | | 只在当前连接的节点执行 | 请根据业务需求选择 flushall 命令执行方式:指定分片执行(返回单分片数据)或全分片执行(返回聚合数据)。命令使用如下:FLUSHALLFLUSHALL SYNCFLUSHALL ASYNCFLUSHALL SYNC NODEID FLUSHALL ASYNC NODEID |
| subscribe | 集群版命令默认转发至所有 Master 节点执行。标准版此命令默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 正常使用 |
| unsubscribe | | | | | 正常使用 |
| psubscribe | | | | | 正常使用 |
| punsubscribe | | | | | 正常使用 |
| publish | 集群版 publish 命令根据 channel 名称计算的 slot 值路由到对应的 Master 节点进行广播。标准版 publish 命令默认转发 Master 节点。 | | | 只在当前连接的节点执行 | 正常使用 |
| pubsub | 支持 CHANNELS、NUMPAT、NUMSUB 选项。集群版 pubsub 命令默认随机转发到后端不同 Master 节点,并且返回结果相同。标准版 pubsub命令默认转发至 Master。 | | | 只在当前连接的节点执行,不同节点返回不同的结果 | 腾讯云 Redis 集群版对 PUBSUB 命令进行了增强,所有节点均返回全局一致的频道列表,与开源版的不同节点返回不一致存在差异,建议业务代码避免依赖分片局部状态,需按全集群维度处理订阅逻辑。 |
| cluster | 集群版支持 cluster keyslot、cluster slots、cluster nodes、cluster info、cluster countkeysinslot、cluster keyslot、cluster getkeysinslot 命令。集群版 cluster slots、cluster nodes、cluster info 命令默认随机转发到后端节点。集群版 cluster info 命令额外支持指定后端节点执行。集群版 cluster keyslot、cluster countkeysinslot、cluster keyslot、cluster getkeysinslot 命令默认根据指定的 slot 转发到相应节点。集群版 cluster slots、cluster nodes 等命令将屏蔽、转换部分敏感信息。 | | | 只在当前连接的节点执行 | 请根据业务场景评估 cluster 命令的转发模式。 |
| asking | 集群版/标准版无实际行为。 | | | 执行后有重定向效果 | Proxy 会处理 ask 错误,用户无需关注。 |
| function | – | – | 集群版支持 function stats、function dump、function list 命令,命令默认随机转发到后端节点。function delete、function flush、function kill、function load、function restore 默认会在所有 Master 节点上同步执行,并确保各节点返回一致的结果后才响应客户端。 | 只在当前连接的节点执行 | 建议评估云上架构是否与实际业务场景存在差异,如果存在差异则需要修改代码。 |
| script | 集群版与标准版均不支持 script debug 命令。集群版 script exists、script flush、script kill、script load 命令默认会在所有 Master 节点上同步执行,并确保各节点返回一致的结果后才响应客户端。标准版 script 命令默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 请检查现有代码逻辑是否与腾讯云默认全节点执行的逻辑存在差异,如存在不一致需按云上规范进行改造。 |
| multiexecdiscard | 事务或 watch 锁定的后端节点由 首个操作的键的哈希槽决定(watch 优先于 multi 后的首条命令),确保事务或监听操作在单节点内原子执行。标准版默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 建议评估事务以及 watch 命令使用是否与上云前存在差异。 |
| watch | 执行 watch 后,连接即被锁定到所监听 key 所在的节点,后续所有命令均通过该连接转发。 | | | 只在当前连接的节点执行 | 建议 watch 和 unwatch 命令之间的 key 操作在同一个 slot 上。 |
| expireat | – | | 集群版与标准版 expireat 命令均不支持[NX | XX | GT | LT] | 只在当前连接的节点执行,并支持 [NX | XX | GT | LT] 选项 | 请评估业务是否需要使用 [NX | XX | GT | LT] 选项。 |
| pexpire | – | | 集群版/标准版PEXPIRE命令不支持[NX | XX | GT | LT] | | |
| pexpireat | – | | 集群版/标准版PEXPIREAT命令不支持[NX | XX | GT | LT] | | |
| client | 集群版与标准版均在 Proxy 层完全兼容 client list、client setname、client getname、client id、client kill、client unblock 命令。client list 的实现依赖一条专用订阅连接:每个 Proxy 都与负责0号 slot 的 master 保持该连接,用于实时汇聚所有 Proxy 的会话信息。client list 的输出仅包含 id、addr、fd、name、cmd、age、idle、proxy 字段,且 id 始终为负数,格式与开源版本不同。client kill 可直接终止其他 Proxy 上的会话。 | | | 只在当前连接的节点执行,并返回相应 redis 版本的 client list 信息 | 请自查业务是否依赖 client 命令;如非必需,请避免执行 client list,以免慢查询和节点内存暴涨。 |
| monitor | monitor 命令只会监控当前连接到的 Proxy 上执行的命令 | | | 只在当前连接的节点执行 | 使用该命令请明确监控目标是单个 Proxy 还是后端某个分片的指标。 |
| imonitor | 集群版 imonitor 命令支持指定后端节点上执行的命令。标准版 imonitor 命令只转发到 Master 节点。 | | | 无此命令 | 使用如下:集群版:IMONITOR NODEID标准版:IMONITOR |
| time | 集群版 time 命令默认随机转发到后端不同节点。标准版 time 命令默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 请评估业务是否依赖 time 命令。 |
| wait | 集群版 wait 命令转发依据上一次写命令转发的后端 Master 节点进行转发。标准版 wait 命令默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 请评估云上 Proxy 转发逻辑与业务代码中的差异。 |
| command | 集群版 command 命令默认随机转发到后端不同节点标准版 command 命令转发至默认 Master 节点。 | | | 只在当前连接的节点执行 | 正常使用 |
| lolwut | 集群版 lolwut 命令默认随机转发到后端不同节点。标准版 lolwut 命令默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 正常使用 |
| echo | 集群版 echo 命令默认随机转发到后端不同 Master 节点。标准版默认转发到 Master 节点。 | | | 只在当前连接的节点执行 | 正常使用 |
| info | 集群版 info 命令默认随机转发至后端 Master 节点执行。标准版 info 命令默认转发至 Master 节点。info 命令额外支持指定后端节点进行转发。info 命令针对返回信息会进行敏感信息屏蔽、转换。 | | | 只在当前连接的节点执行 | info 命令使用如下:INFOINFO NODEID |
| ping | 集群版 ping 命令默认随机转发到后端任一 Master 节点。集群版 ping 命令额外支持指定后端节点执行。集群版与标准版均支持 ping 不转发到后端节点,由Proxy 直接回包。 | | | 只在当前连接的节点执行 | 请评估 ping 命令是否需要透传至后端分片,命令使用如下:PINGPING NODEID |
| hello | – | 集群版与标准版 hello 命令目前仅支持 hello 2,并且需要用户执行 Auth 后才能正常执行。Proxy 目前不支持 resp3 协议,执行 hello 3将会报错,请将客户框架转换为 resp2 的 auth 命令进行认证。 | | 只在当前连接的节点执行 | 请评估业务框架是否存在使用HELLO 3 auth username password形式进行认证;是否使用 resp3 协议,需要降级为 resp2 协议。 |
| config | 集群版与标准版 config set 命令被 Proxy 拦截,立即返回“成功”响应,命令不会真正生效。集群版 config get 命令默认随机访问任一后端节点。标准版默认访问 Master 节点。 | | | 只在当前连接的节点执行 | 建议通过控制台查看或者修改配置。具体信息,请参见 参数配置。 |
| slowlog | 集群版 slowlog 命令默认执行必须指定后端节点,否则报错标准版 slowlog 命令默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 建议通过控制台查看完整的慢查信息。具体操作,请参见 查询 Redis 版慢查询。 |
| memory | 集群版不支持 memory 命令。 | | | 只在当前连接的节点执行 | 建议通过控制台查看实例的 内存分析(大 Key 分析)。 |
| readonly | 集群版 readonly 命令将在 Proxy 上执行并返回,实际不生效。 | | | 只在当前连接的节点执行并生效 | 建议通过控制台开启副本只读功能。具体操作,请参见 副本只读。 |
| debug | debug 命令仅支持 object 子命令。 | | | debug 命令全部子命令支持 | 请业务评估是否使用其他子命令,如有则需要进行代码修改。 |
| sentinel | 集群版与标准版均兼容 SENTINEL sentinels、SENTINEL get-master-addr-by-name、SENTINEL slaves,不透传到后端。 | | | 集群模式不支持哨兵模式 | 集群模式,可忽略此命令。哨兵模式,请评估当前云上 Redis 支持的 sentinel 命令是否满足业务需求。 |
| role | 集群版 role 命令默认随机转发至后端任一节点。标准版默认转发至 Master 节点。 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
| lastsave | 集群版默认随机转发到后端不同 Master 节点。标准版默认转发到 Master 节点。 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
| latency | 集群版不支持。标准版转发至默认 Master 节点。 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
| readwrite | 集群版不支持 readwrite 命令。 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
| pfselftest | 集群版不支持 pfselftest 命令 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
| post | 集群版不支持 post 命令 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
| host | 集群版不支持 host 命令 | | | 只在当前连接的节点执行 | 建议用户不使用。 |
腾讯云分布式缓存数据库 Proxy 架构与直连模式使用差异
•
腾讯云产品
腾讯云分布式缓存数据库(兼容 Redis) 的Proxy 架构与直连模式使用差异。
赞 (0)
腾讯云分布式缓存数据库 集群架构全局 SCAN 使用指南
上一篇
4天前
腾讯云分布式缓存数据库 大版本功能清单
下一篇
4天前