You need to enable JavaScript to run this app.
文档中心
缓存数据库 Redis 版

缓存数据库 Redis 版

复制全文
下载 pdf
开发参考(数据面)
命令限制
复制全文
下载 pdf
命令限制
缓存数据库 Redis 版兼容大多数的原生 Redis 命令,但在使用部分命令时会有一些限制。本文汇总 Redis 实例中的命令限制。​
支持的命令​
关于缓存数据库 Redis 版支持的命令详情,请参见命令支持。​
多 key 命令限制​
Redis 支持的多 key 命令如下表所示。​
​
命令族​
具体命令​
Bitmap​
COPY、BITOP​
Generic​
DEL、EXISTS、RENAME、RENAMENX、SORT、TOUCH、UNLINK​
Geospatial indices​
GEOSEARCHSTORE​
HyperLogLog​
PFCOUNT、PFMERGE​
List​
BLMOVE、BLMPOP、BLPOP、BRPOP、RPOPLPUSH、BRPOPLPUSH、LMOVE、LMPOP​
Scripting and functions​
EVAL、EVAL_RO、EVALSHA、EVALSHA_RO、FCALL、FCALL_RO​
Set​
SDIFF、SDIFFSTORE、SINTER、SINTERCARD、SINTERSTORE、SMOVE、SUNION、SUNIONSTORE​
Sorted set​
BZMPOP、BZPOPMIN、BZPOPMAX、ZDIFFSTORE、ZINTER、ZINTERCARD、ZINTERSTORE、ZMPOP、ZMSCORE、ZRANGESTORE、ZUNION、ZUNIONSTORE、ZDIFF​
Stream​
XREAD、XREADGROUP​
String​
MSETNX、MGET、MSET​
Transactions​
WATCH​
​
但 Redis 的实例或连接地址类型不同,使用上述多 key 命令时的限制也不同。具体限制如下。​
​
启用分片集群的 Redis 实例
不启用分片集群的 Redis 实例
​
  • 使用公网或私网地址连接实例时​
  • 当使用下表中的任意多 key 命令时,需要保证所要操作的 key 都分布在 1 个 hash slot 中。​
  • ​
    命令族​
    具体命令​
    Bitmap​
    COPY、BITOP​
    Generic​
    RENAME、RENAMENX、SORT、TOUCH​
    Geospatial indices​
    GEOSEARCHSTORE​
    HyperLogLog​
    PFCOUNT、PFMERGE​
    List​
    BLMOVE、BLMPOP、BLPOP、BRPOP、RPOPLPUSH、BRPOPLPUSH、LMOVE、LMPOP​
    Scripting and functions​
    EVAL、EVAL_RO、EVALSHA、EVALSHA_RO、FCALL、FCALL_RO​
    Set​
    SINTERCARD​
    Sorted set​
    BZMPOP、BZPOPMIN、BZPOPMAX、ZDIFFSTORE、ZINTER、ZINTERCARD、ZMPOP、ZMSCORE、ZRANGESTORE、ZUNION、ZDIFF​
    Stream​
    XREAD、XREADGROUP​
    String​
    MSETNX​
    Transactions​
    WATCH​
    ​
说明​
  • 您可以通过 hash tag 来构造相同 slot 的 key。hash tag 的使用方法,请参见 Keys hash tags。您还可以使用 Slot 分布视图中提供的 Key 路由模拟器功能,验证数据是否被强制路由至同一分片。​
  • 使用直连地址连接实例时​
  • 在执行任何多 key 命令时,需要保证命令所要操作的 key 都分布在 1 个 hash slot 中。通过直连地址连接实例的方法,请参见通过直连地址连接实例。​
​
事务命令限制​
  • 无论是启用分片集群还是未启用分片集群的 Redis 实例,均不允许在事务中使用如下命令。​
说明​
缓存数据库 Redis 版支持的事务命令详情,请参见 Transactions。​
  • ​
    命令族​
    具体命令​
    Connection management​
    HELLO、AUTH、PING、CLIENT GETNAME、CLIENT SETNAME、CLIENT LIST、CLIENT ID、CLIENT KILL​
    ​
  • 启用分片集群 Redis 实例支持通过直连模式和代理模式连接实例,模式不同,事务命令限制也不同。​
  • ​
    直连模式
    代理模式
    ​
    当通过直连模式(即使用直连地址)连接实例执行事务命令时,需要保证命令所要操作的 key 都分布在同一个 hash slot 中。您可以通过 hash tag 来构造相同 slot 的 key。hash tag 的使用方法,请参见 Keys hash tags。您还可以使用 Slot 分布视图中提供的 Key 路由模拟器功能,验证数据是否被强制路由至同一分片。​
    说明​
    在使用直连模式连接实例执行事务命令时,必须严格保证事务所操作的 key 均在同一 slot 上,否则事务命令会执行失败。​
    ​
Lua 脚本使用限制​
说明​
关于 Lua 脚本使用的更多详情,请参见 Lua 脚本使用指南。​
  • 缓存数据库 Redis 版的实例类型不同,使用 Lua 脚本时的限制也不同。其中:​
  • 启用分片集群的 Redis 实例​
  • 所有 key 都应该由 KEYS 数组来传递;redis.call/pcall 中调用的 Redis 命令,key 的位置必须是 KEYS 数组。​
  • numkeys 的取值需大于等于 1。​
  • 所有 key 必须在一个 slot 上。​
  • Proxy 小版本小于 1.511.0 的实例,Lua 脚本中 key 参数的个数默认上限为 100。当 key 个数超过上限时,会出现 command arguments invalid 报错。若有需要,请提交工单联系技术升级实例 Proxy 至最新版本来取消该限制。​
  • 不启用分片集群的 Redis 实例​
  • Proxy 小版本小于 1.511.0 的实例,Lua 脚本中 key 参数的个数默认上限为 100。当 key 个数超过上限时,会出现 command arguments invalid 报错。若有需要,请提交工单联系技术升级实例 Proxy 至最新版本来取消该限制。​
  • 缓存数据库 Redis 版限制了部分命令不可在 Lua 脚本中使用。更多关于 Lua 脚本中支持使用的命令详情,请参见命令支持。​
​
禁用命令说明​
缓存数据库 Redis 版实例默认禁用 flushall,flushdb 和 keys 命令。​
说明​
  • 针对上述默认禁用命令,仅当前实例支持的命令才会出现在禁用命令参数(disabled-commands)的默认值中。​
  • 如需使用上述命令,需将对应的命令从禁用命令参数的默认值中移除。否则执行这些禁用命令时,会出现 no permission to execute the command 的报错。参数修改方法,请参见设置实例参数。​
  • 单个实例最多支持禁用 16 个命令,多个命令间用英文逗号(,)分隔。关于禁用命令的数量限制详情,请参见功能特性限制。​
其他命令限制​
​
启用分片集群的 Redis 实例
不启用分片集群的 Redis 实例
​
  • 不支持在 SORT 命令中使用 GET 或 BY 参数。​
  • 创建时间早于 2022 年 05 月 17 日的实例,仅支持 SELECT 0。​
  • 已启用分片集群的 Redis 实例在执行 RANDOMKEY 命令时,会采用轮询方式来访问各分片,即 Redis 会将 RANDOMKEY 命令请求发往每一个分片,当访问的分片不存在符合条件的 key 时就返回 nil,该返回结果仅表示在当前分片上没有找到符合条件的 key,不代表在其他分片上没有符合条件的 key。因此建议在使用 RANDOMKEY 命令时,不要依据返回结果是否为nil 来判定是否存在符合条件的 key。​
​
​
​
最近更新时间:2026.05.29 11:23:03
这个页面对您有帮助吗?
有用
有用
无用
无用