我们可以在 Redis 的 Lua 脚本中使用 pipeline 吗?

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

是否有类似于管道的方法,可以将它们一起执行。也许更有效率?

点赞
用户1688185
用户1688185

优秀建议

使用MSET怎么样?

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"
2015-11-27 15:10:00
用户3160475
用户3160475

不可以在 Lua 脚本中使用流水线来执行 Redis 命令,也不能将它们批量处理。不过需要注意的是,调用 redis.call 已经非常高效了,所以不必太过担心。

正如 @deltheil 指出的那样,如果使用 Redis 命令的可变参数形式,可以将多个命令进行“分组”。虽然对于 Lua 脚本而言并不那么重要,但这绝对是值得推荐的最佳实践。

2015-11-27 17:08:23