Redis命令链式操作

所以,我已经阅读了有关 Redis 管道和 multi/exec 命令的内容。但是,我不能回答这个问题。在 Redis 中,我可以在操作 B 中使用操作 A 的结果,而不必将其从 Redis 中取出吗?这可以使用 Lua 脚本完成吗?Redis 自然可以完成此操作吗?我可以以特定的方式映射结果吗?

点赞
用户1076171
用户1076171

这不是基于 Lua 的答案,但你可能想看一下一些在 Redis 上存储操作结果的标准命令:

2012-10-09 20:33:43
用户204011
用户204011

是的,可以通过脚本实现,但是有限制的,因为它不能很好地与尚未发布的 Redis 集群兼容。

以下是 Ruby 的示例代码,但是如果您的 Redis 客户端支持 EVAL,可以在任何编程语言下编写:

require "redis"
redis = Redis.new

redis.hset("foo","bar","baz")
redis.set("baz",42)

script = <<EOS
local k = redis.call("hget","foo",ARGV[1])
return redis.call("get",k)
EOS

puts redis.eval(script,keys:[],argv:["bar"])

这段代码将输出 42

2012-10-10 08:58:00