我们可以在redis的lua脚本中进行管道传输

sim*_*xia 2 lua redis

例如

我有几个set命令,我不关心它们的返回值,在我的lua脚本中,我必须写几个redis.call('set', key, val).

有什么方法像管道,所以我可以一起做.也许效率更高?

Ita*_*ber 6

不 - 无法从 Lua 脚本管道 Redis 调用或批处理它们。注意调用redis.call非常有效,因此无论如何您都不必太担心。

正如@deltheil 指出的那样,如果您使用其可变参数形式,则可以对同一命令的多个调用“分组”。虽然对于 Lua 脚本不太重要,但这绝对是推荐的做法。

  • 虽然正确这个答案错过了一个重要的点:你不能从 LUA 脚本管道,因为它没有任何意义。Redis LUA 脚本的执行是原子的,并且由于 Redis 是单线程的,因此在执行脚本时无法执行任何其他 Redis 命令,这使得 LUA 脚本中对管道的任何需求变得多余且无用。 (2认同)

del*_*eil 5

那么使用MSET呢?

$ redis-cli 
127.0.0.1:6379> eval 'redis.call("mset", "foo", "bar", "scm", "git", "test", "ok")' 0
(nil)
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> get scm
"git"
127.0.0.1:6379> get test
"ok"
Run Code Online (Sandbox Code Playgroud)