如何并行运行单个Lua脚本对多个Redis值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何并行运行单个Lua脚本对多个Redis值?相关的知识,希望对你有一定的参考价值。

在Redis中,我们有表示输入值的字符串。我们(希望)拥有一个动态生成的Lua脚本(在用户使用GUI定义之后),该脚本根据输入字符串计算结果字符串。每组输入值彼此独立。所以这应该是平凡的并行,但是,EVAL似乎阻止直到完成。

Redis中是否有一种方法可以跨越一堆值运行单个Lua脚本而无需重写脚本本身来执行此操作?

答案

由于Redis是作为单线程服务器实现的,因此不可能并行地从同一客户端运行多个命令。但是,您应该能够在多个客户端上运行多个命令(包括script命令),Redis将在其IO循环中交错它们。

话虽如此,Redis不仅超快,而且灵活;请考虑以下选项之一:

  1. 自己编写Redis模块,添加命令或为您的喜好添加新命令。
  2. 考虑一个多分片环境。这将使每个redis-server(或shard)能够独立运行,同时您可以将调用定向到正确的分片。这有点劳力密集,如果你考虑这个解决方案,请告诉我,我可以进一步指导你。

祝一切顺利!

以上是关于如何并行运行单个Lua脚本对多个Redis值?的主要内容,如果未能解决你的问题,请参考以下文章

Redis Lua 脚本解包返回不同的结果

spring redis运行脚本:如何传递到期时间值

redis中使用lua脚本及使用脚本完成限流

Redis使用lua脚本

一网打尽Redis Lua脚本并发原子组合操作

Redis深度解析(19)-Lua脚本