从Redis中调用Lua脚本时,可以在两个数组中传递值:KEYS和ARGV。有什么不同? Redis如何处理KEYS数组中的值?如果在我的脚本中,我必须使用在运行时动态生成的密钥,该怎么办?
答案 0 :(得分:18)
您的所有问题都会在EVAL
页面上得到解答,但是因为您问过......:
有什么区别?
KEYS
用于传递密钥名称,而ARGS
应该用于其他任何内容。这并不是完全强制执行的(即大多数情况下你可以将它们混合在一起)但如果不加以注意可能会导致潜在的问题。
Redis如何处理KEYS数组中的值?
检查KEYS
的内容以验证所有密钥是否可用于运行该脚本的Redis分片。此机制适用于允许在Redis群集部署中运行脚本。
如果在我的脚本中,我必须使用在运行时动态生成的密钥,该怎么办?
请参阅之前的答案 - 这是可行的,但您反对这些建议。您的脚本只能在独立的Redis实例上运行,并且由于未指定此行为,因此在将来的版本中可能会中断。