【发布时间】:2018-10-03 00:42:37
【问题描述】:
从 Redis 中调用 Lua 脚本时,可以在两个数组中传递值:KEYS 和 ARGV。有什么区别? Redis 如何处理 KEYS 数组中的值?如果在我的脚本中,我必须使用在运行时动态生成的密钥怎么办?
【问题讨论】:
标签: redis
从 Redis 中调用 Lua 脚本时,可以在两个数组中传递值:KEYS 和 ARGV。有什么区别? Redis 如何处理 KEYS 数组中的值?如果在我的脚本中,我必须使用在运行时动态生成的密钥怎么办?
【问题讨论】:
标签: redis
您的所有问题都在EVAL 页面上得到解答,但既然您问...:
有什么区别?
KEYS 用于传递键名,而ARGS 应该用于其他任何东西。这不是完全强制执行的(即大多数时候你可以混合它们),但如果不遵循可能会导致潜在的问题。
Redis 如何处理 KEYS 数组中的值?
检查KEYS 的内容以验证所有密钥都可用于运行脚本的 Redis 分片。这种机制允许在 Redis 集群部署中运行脚本。
如果在我的脚本中,我必须使用在运行时动态生成的密钥怎么办?
查看以前的答案 - 这是可行的,但您会违反建议。您的脚本只能在独立的 Redis 实例上安全运行,并且由于未指定此行为,因此它可能会在未来的版本中中断。
【讨论】:
SORT mySet BY myHash:*->order GET myHash:*->name这样的SORT命令中使用?我可以通过myHash:* 或类似的东西吗?
Your script will be safe to run only on a stand alone Redis instance and since this behavior isn't specified, it may break in future releases. 这似乎严重限制了lua脚本的用处...