AWS Valkey无服务器实例Lua脚本无KEYS参数报错及SCAN使用求助
解决AWS Valkey无服务器Lua脚本SCAN命令的KEYS参数限制问题
问题原因
AWS Valkey无服务器实例强制要求Lua脚本调用时必须传入至少一个KEYS参数,即使SCAN这类不需要指定目标键的命令也得满足该要求,否则会抛出ERR Lua scripts without any input keys are not supported.错误。
绕过方法
只需传入一个占位键,无需在脚本中使用它,仅用于满足AWS的参数检查要求:
- 修改后的EVAL命令示例:
EVAL "return redis.call('SCAN', '0', 'MATCH', ARGV[1])" 1 "dummy-key" "{123}:*"
这里的1表示传入1个KEYS参数,"dummy-key"是占位的键值(可以是任意字符串,甚至是不存在的键),脚本逻辑完全不受这个占位键影响,SCAN命令仍会正常按模式匹配所有键。
原理说明
AWS的限制仅校验脚本调用时KEYS参数的数量是否大于0,并不验证脚本内部是否实际使用了这些键,因此传入无关的占位键即可绕过限制,同时保持SCAN命令的原有功能。
内容的提问来源于stack exchange,提问作者jjnrmason
相关产品推荐
相关产品推荐

