Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何针对多个Redis值并行运行单个Lua脚本?_Lua_Redis - Fatal编程技术网

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

如何针对多个Redis值并行运行单个Lua脚本?,lua,redis,Lua,Redis,在Redis中,我们有表示输入值的字符串。我们(希望)有一个动态生成的Lua脚本(在用户使用GUI定义之后),它根据输入字符串计算结果字符串。每组输入值彼此独立。所以这应该是可并行的,然而,EVAL似乎会阻塞直到完成 在Redis中,有没有一种方法可以跨一组值运行一个Lua脚本,而不必重写脚本本身就可以做到这一点?由于Redis是作为一个单线程服务器实现的,因此不可能从同一个客户机并行运行多个命令。 但是,您应该能够在多个客户机上运行多个命令(包括script命令),Redis将在其IO循环中交

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


在Redis中,有没有一种方法可以跨一组值运行一个Lua脚本,而不必重写脚本本身就可以做到这一点?

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

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

  • 自己编写Redis模块,添加命令,或者根据自己的喜好添加新命令
  • 考虑多分片环境。这将使每个redis服务器(或shard)能够独立运行,同时您可以将调用指向正确的shard。这是劳动密集型的,如果你考虑这个解决方案,请让我知道,我可以进一步指导你对此事。

  • 祝你一切顺利

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

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

  • 自己编写Redis模块,添加命令,或者根据自己的喜好添加新命令
  • 考虑多分片环境。这将使每个redis服务器(或shard)能够独立运行,同时您可以将调用指向正确的shard。这是劳动密集型的,如果你考虑这个解决方案,请让我知道,我可以进一步指导你对此事。

  • 祝你一切顺利

    嗯,这听起来像是我不得不人工分割我的行。类似于计算每一行的Sh1,然后模N,其中N是碎片的数目,然后至少我得到一些负载共享……确切地说,甚至更精确——在条目的键上的一些散列函数(不要考虑条目的值作为哈希的输入),否则,(键,值)当您更新值时,可能需要迁移pair。此外,有一些开源代理将为您提供现成的代理,还有一个商业代理。@Eli或Malul多个客户端可以在redis中运行并行脚本吗?例如,100个客户端并发运行100个脚本。@MuhammadfaizanFared开源redis是单线程的(免责声明-我离开5-6年了),但当时是真的-因此没有“真正的”并发。Oran Agra是开源维护者,他肯定知道。如果你是ar Redis Labs的客户,那么肯定是的。嗯,听起来我不得不人为地分割我的行。类似于计算每一行的Sh1,然后模N,其中N是碎片的数目,然后至少我得到一些负载共享……确切地说,甚至更精确——在条目的键上的一些散列函数(不要考虑条目的值作为哈希的输入),否则,(键,值)当您更新值时,可能需要迁移pair。此外,有一些开源代理将为您提供现成的代理,还有一个商业代理。@Eli或Malul多个客户端可以在redis中运行并行脚本吗?例如,100个客户端并发运行100个脚本。@MuhammadfaizanFared开源redis是单线程的(免责声明-我离开5-6年了),但当时是真的-因此没有“真正的”并发。Oran Agra是开源维护者,他肯定知道。如果您是ar Redis实验室的客户,那么肯定是的。