缓存数据库 Redis 版兼容大多数的原生 Redis 命令,但在使用部分命令时会有一些限制。本文汇总 Redis 实例中的命令限制。
关于缓存数据库 Redis 版支持的命令详情,请参见命令支持。
Redis 支持的多 Key 命令如下表所示。
命令族 | 具体命令 |
---|---|
Bitmap | BITOP |
Generic | DEL、EXISTS、RENAME、RENAMENX、SORT、TOUCH、UNLINK |
HyperLogLog | PFCOUNT、PFMERGE |
List | BLPOP、BRPOP、RPOPLPUSH、BRPOPLPUSH |
Scripting and Functions | EVAL、EVALSHA |
Set | SDIFF、SDIFFSTORE、SINTER、SINTERSTORE、SMOVE、SUNION、SUNIONSTORE |
Sorted Set | BZPOPMIN、BZPOPMAX、ZUNIONSTORE、ZINTERSTORE |
Stream | XREAD、XREADGROUP |
String | MSETNX、MGET、MSET |
Transactions | WATCH |
但 Redis 的实例或连接地址类型不同,使用上述多 Key 命令时的限制也不同。具体限制如下:
启用分片集群的 Redis 实例
使用公网或私网地址连接实例时
当使用下表中的任意多 Key 命令时,需要保证所要操作的 Key 都分布在 1 个 hash slot 中。
命令族 | 具体命令 |
---|---|
Bitmap | BITOP |
Generic | EXISTS、RENAME、RENAMENX、SORT、TOUCH、UNLINK |
HyperLogLog | PFCOUNT、PFMERGE |
List | BLPOP、BRPOP、RPOPLPUSH、BRPOPLPUSH |
Scripting and Functions | EVAL、EVALSHA |
Set | SMOVE |
Sorted Set | BZPOPMIN、BZPOPMAX |
Stream | XREAD、XREADGROUP |
String | MSETNX |
Transactions | WATCH |
说明
使用直连地址连接实例时
在执行任何多 Key 命令时,需要保证命令所要操作的 Key 都分布在 1 个 hash slot 中。通过直连地址连接实例的方法,请参见通过直连地址连接实例。
不启用分片集群的 Redis 实例
无相关限制。
无论是启用分片集群还是未启用分片集群的 Redis 实例,均不允许在事务中使用如下命令。
说明
缓存数据库 Redis 版支持的事务命令详情,请参见命令支持—Transactions。
命令族 | 具体命令 |
---|---|
Connection Management | HELLO、AUTH、PING、CLIENT GETNAME、CLIENT SETNAME、CLIENT LIST、CLIENT ID、CLIENT KILL |
针对启用分片集群 Redis 实例,无论是通过代理模式(即使用公私网地址)还是直连模式(即使用直连地址)连接实例,在执行事务命令时,均需要保证命令所要操作的 Key 都分布在 1 个 hash slot 中。您可以通过 hash tag 来构造相同 slot 的 Key。hash tag 的使用方法,请参见 Keys hash tags。
说明
说明
关于 Lua 脚本使用的更多详情,请参见 Lua 脚本使用指南。
缓存数据库 Redis 版的实例类型不同,使用 Lua 脚本时的限制也不同。其中:
启用分片集群的 Redis 实例
KEYS
数组来传递;redis.call/pcall
中调用的 Redis 命令,Key 的位置必须是 KEYS
数组。numkeys
的取值需大于等于 1。command arguments invalid
报错。若需要提高默认上限(最多可提升至 100000),请提交工单联系技术支持。不启用分片集群的 Redis 实例
不启用分片集群的 Redis 实例在使用 Lua 脚本时,Lua 脚本中 Key 参数的个数默认上限为 100。当 Key 个数超过上限时,会出现 command arguments invalid
报错。若需要提高默认上限(最多可提升至 100000),请提交工单联系技术支持。
缓存数据库 Redis 版限制了部分命令不可在 Lua 脚本中使用。更多关于 Lua 脚本中支持使用的命令详情,请参见命令支持。
缓存数据库 Redis 版实例默认禁用 flushall
,flushdb
和 keys
命令。
说明
启用分片集群的 Redis 实例
不启用分片集群的 Redis 实例
不支持在 SORT 命令中使用 GET 或 BY 参数。