例如
我有几个set
命令,我不关心它们的返回值,在我的lua脚本中,我必须写几个redis.call('set', key, val)
。
是否有类似管道的方式,可以将它们一起执行。也许更有效率?
不可以使用 Lua 脚本来批量执行 Redis 命令,也不能对命令进行流水线处理。需要注意的是,使用 redis.call
函数调用 Redis 命令非常高效,因此您无需过于担心这个问题。
正如 @deltheil 所指出的那样,如果您使用 Redis 命令的可变参数形式,则可以“分组”多个对同一命令的调用。虽然这对于 Lua 脚本不是很重要,但这绝对是推荐的做法。
redis.call
肯定会引入一些开销,所以将多个调用合并成一个应该能提高性能。 - Jerry Chin$ 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"