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

在Redis中,我们有表示输入值的字符串。我们(希望)有一个Lua脚本,它是动态生成的(在用户使用GUI定义后),根据输入字符串计算结果字符串。每个输入值集是相互独立的。所以这应该是容易并行化的,但是,EVAL似乎会阻塞直到完成。

在Redis中有没有一种方法可以在不必重写脚本本身的情况下在一堆值中运行单个Lua脚本?

点赞
用户8243597
用户8243597

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

话虽如此,Redis 不仅超级快,而且非常灵活; 请考虑以下其中一种选项:

  1. 自己编写 Redis 模块,添加命令,或添加一个您喜欢的新命令。
  2. 考虑多重分片环境。这将使每个 Redis 服务器(或分片)可以独立运行,同时您可以将调用定向到正确的分片。如果您考虑这种解决方案,请告诉我,我可以进一步指导您。

一切顺利!

2017-12-28 07:03:46