为什么在调用Redis Lua脚本时有KEYS和ARGV数组?

时间:2015-08-19 07:43:28

标签: redis

从Redis中调用Lua脚本时,可以在两个数组中传递值:KEYS和ARGV。有什么不同? Redis如何处理KEYS数组中的值?如果在我的脚本中,我必须使用在运行时动态生成的密钥,该怎么办?

1 个答案:

答案 0 :(得分:18)

您的所有问题都会在EVAL页面上得到解答,但是因为您问过......:

  

有什么区别?

KEYS用于传递密钥名称,而ARGS应该用于其他任何内容。这并不是完全强制执行的(即大多数情况下你可以将它们混合在一起)但如果不加以注意可能会导致潜在的问题。

  

Redis如何处理KEYS数组中的值?

检查KEYS的内容以验证所有密钥是否可用于运行该脚本的Redis分片。此机制适用于允许在Redis群集部署中运行脚本。

  

如果在我的脚本中,我必须使用在运行时动态生成的密钥,该怎么办?

请参阅之前的答案 - 这是可行的,但您反对这些建议。您的脚本只能在独立的Redis实例上运行,并且由于未指定此行为,因此在将来的版本中可能会中断。