我需要在 Redis 上执行以下操作:
ZINTERSECT out 2 myset1 myset2
ZRANGE out 0 -1 (lets say it returns a set [20,30,40,50])
MGET user:20:blabla user:30:blabla user:40:blabla user:50:blabla (it returns [1,2,3,4])
ZRANGE blabla:1:value 0 -1
ZRANGE blabla:2:value 0 -1
ZRANGE blabla:3:value 0 -1
ZRANGE blabla:4:value 0 -1
这是我的“列表列表”类型结构的单笔交易。我的问题:
1- 是否可以一次调用运行它?
2- 我应该为此使用事务还是脚本?
3- 在没有 Redis 的脚本或事务功能的情况下,在高流量下运行所有这些线路是否可行?
谢谢
最佳答案
2 - Should I use Transaction or Scripting for this?
由于您要在后续命令中使用某些命令的结果,因此可以使用脚本。
Lua 脚本通常很快。根据定义,Redis 中的脚本也是事务性。
3 - Is it feasible to run all these lines under high traffic without scripting or transaction features of Redis ?
这取决于您认为什么是“高流量”。无论如何,您应该测试一下,看看您的方法是否可行。在大多数情况下,一个简单的 Lua 脚本也会很快。
最重要的是,您应该考虑要使用的每个命令的时间复杂度。这些可以在 documentation of each command 中找到.
关于java - 一次 Redis 调用,多次执行返回类型的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855818/