最近更新时间:2024.04.11 15:59:58
首次发布时间:2021.11.04 14:15:18
缓存数据库 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、ZINTERSTORE、ZUNIONSTORE |
Stream | XREAD、XREADGROUP |
String | MSETNX |
Transactions | WATCH |
说明
使用直连地址连接实例时
在执行任何多 Key 命令时,需要保证命令所要操作的 Key 都分布在 1 个 hash slot 中。通过直连地址连接实例的方法,请参见通过直连地址连接实例。
不启用分片集群的 Redis 实例
无相关限制。
启用分片集群的 Redis 实例
说明
您也可以提交工单联系技术支持通过设置相关参数,将事务中不同 slot 的命令拆分到不同分片,但此时无法保证事务的原子性。
不启用分片集群的 Redis 实例
不启用分片集群的 Redis 实例不允许在事务中使用如下命令。
命令族 | 具体命令 |
---|---|
Connection Management | HELLO、AUTH、PING、CLIENT GETNAME、CLIENT SETNAME、CLIENT LIST、CLIENT ID、CLIENT KILL |
Transactions | WATCH、UNWATCH |
说明
关于 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 脚本中支持使用的命令详情,请参见 Lua 脚本中支持的命令。
缓存数据库 Redis 版的实例类型不同,默认禁用的高危命令也不同。其中:
flushall
,flushdb
和 keys
命令。flushall
和 keys
命令。说明
启用分片集群的 Redis 实例
不启用分片集群的 Redis 实例
不支持在 SORT 命令中使用 GET 或 BY 参数。