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

时间:2017-12-27 22:29:39

标签: lua redis

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

Redis是否有办法在一堆值中运行单个Lua脚本而无需重写脚本本身来执行此操作?

1 个答案:

答案 0 :(得分:1)

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

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

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