为什么Redis禁止用户脚本调用其他脚本?如何保持Lua脚本的可维护性

时间:2014-03-16 03:08:48

标签: redis

Redis禁止在用户脚本中使用'EVAL'和'EVALSHA'等命令。我们可以从scuh禁令中受益?

绕过此限制的一种方法是将所有Lua脚本放在一个中。但是,它违反了脚本的可维护性。他们有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

Redis禁止因为写操作中的可复制性。

脚本的SHA1校验和应该描述Lua脚本所做的所有。 当脚本以及数据被复制并在Redis从站上执行时,结果应该完全相同。

因此,具有随机性质的功能(如randtime)将从写入操作中排除。 为什么{1}}和eval也被禁止阅读脚本,这可能是因为它使得#is-write-script'分析不可能或至少很麻烦。

有关如何解决此问题的可能解决方案,请参阅this发布。

我们在连接到不同的redis服务器时使用此SHA1响应值环回机制,请参阅此diagram

希望这有帮助,TW