我想知道什么是链接在一起的一系列命令的最佳方式,以便它们都在返回最终结果之前在redis上执行?我所有的数据都存储在集合中。Redis链命令
data1 = [ a, b, c, d, e]
data2 = [b, c]
我将如何去获得数据1和数据2(结果= B,C),然后调用结果SRANDMEMBER的交集?在一系列的它看起来像:
redis> SINTER data1 data2
redis> SRANDMEMBER <previous result>
有当然可以是其他操作链在一起像那么sdiff和SADD而是从一个路口选择一个随机的项目好像最简单的例子。
我试图创建一个Lua脚本,但我收到的消息“的Lua Redis的()命令参数必须是字符串或整数”时,我试图执行以下代码:
local k1, k2 = KEYS[1], KEYS[2]
local intersect, single_record
if not redis.call("exists", k1) then return 0 end
intersect_data = redis.call("SINTER", k1, k2)
single_record = redis.call("SRANDMEMBER", intersect_data)
return single_record
https://redis.io/commands/multi和https://redis.io/commands/sinterstore可能适合您。 – Niloct
'MULTI'在Lua脚本的上下文中没有意义,因此在尝试调用它时被禁用。 –
“将一系列命令链接在一起以便它们在返回最终结果之前在redis上执行的最佳方式是什么?”。我从来没有说过要使用lua脚本。 – Niloct