Redis 集群 - 事务与 LUA 脚本,哪一个会产生更好的性能?

Redis Cluster - transaction vs LUA script, which one results in a better performance?

如果我在 Redis 集群中使用事务和 LUA 脚本(不是缓存的脚本)都可以获得相同的结果,哪个具有更好的性能? LUA 脚本必须在每次执行时编译,对吧?那么对性能有影响吗?

我找不到任何方法在 Redis 集群的服务器上缓存脚本,并且只收到该脚本的一个 sha1

并根据交易文件:

"we may deprecate and finally remove transactions"

Transaction 会被LUA script

替换的原因是什么?

抱歉,如果我有任何错误!

使用 SCRIPT LOAD 获取任何脚本的 sha1(或者在 Redis 之外计算它,例如,使用来自脚本 shell 的 sha1sum 但记得处理换行符) .

关于性能,虽然我没有正式数据支持这一说法,但我的经验表明差异可以忽略不计,如果有的话。

Is there any reason why Transaction will be replaced by LUA script

Lua 就像打了类固醇的交易,MULTI 提供了 Lua 尚未提供的任何东西(除了乐观锁模式)。也就是说,我很难相信它会完全被淘汰。

StackExchange.Redis 在幕后自动使用准备好的脚本(SCRIPT LOADEVALSHA 等),因此在每次调用的基础上,脚本很少高架。此外,事务可能涉及延迟步骤以在决定是完成还是中止脚本之前确认断言。由于需要先获取所需数据、发出断言等,因此使用 Redis 事务也常常非常尴尬。这也会对带宽和延迟产生影响。由于所有这些原因:一般来说,脚本通常更方便。但是,有时它们可​​能不适用。此外,您的服务器可能未启用脚本(无论是出于版本控制还是安全问题)。请注意,如果您的脚本逻辑错误,可能会发生非常糟糕的事情(阻塞服务器而无望恢复)。